2012-04-02 18 views
3

QTabWidgetの実装では、tabCloseRequested()currentChanged()シグナルが検出されていません。QTabWidgetのシグナルが検出されない

TileSheetManager::TileSheetManager(QWidget *parent) 
: QTabWidget(parent) 
{ 
    int w = WIDTH; 
    int h = HEIGHT; 

    this->setMinimumSize(w, h); 
    this->setMaximumSize(w, h); 

    setTabsClosable(true); 
    setTabShape(QTabWidget::Rounded); 

    connect(this, SIGNAL(tabCloseRequested(int index)), this, SLOT(closeTileWidget(int index))); 
    connect(this, SIGNAL(currentChanged(int index)), this, SLOT(tabChanged(int index))); 
} 

qDebug()は私のために働いていなかったので、私はこのためQMessageBoxを使用しています。

void TileSheetManager::closeTileWidget(int index) 
{ 
    QMessageBox msgBox; 
    msgBox.setText("Tab " + QString::number(index) + " removed!"); 
    msgBox.exec(); 

    TileWidget *t = (TileWidget *) widget(index) ; 
    t->deleteLater(); 
    removeTab(index); 
} 

void TileSheetManager::tabChanged(int index) 
{ 
    QMessageBox msgBox; 
    msgBox.setText("Tab was Changed!"); 
    msgBox.exec(); 

    TileWidget *t; 

    for(int i = 0; i < count(); i++) 
    { 
     t = (TileWidget *) widget(i) ; 
     t->resetSetBrush(); 
    } 
} 

タブは、選択したブラシがリセットされていない、と私は何もメッセージを取得していないので、私は信号がピックアップされていない締結よ、閉じて取得されていません。以前のプロジェクトでも同様のコードを使用していたので、これはうまくいきました。

答えて

7

ないconnect関数内の変数名を使用:シグナルとスロットのパラメータは 任意の変数名、タイプのみを含んではならないということ

注意を。

接続が

connect(this, SIGNAL(tabCloseRequested(int)), this, SLOT(closeTileWidget(int))); 
connect(this, SIGNAL(currentChanged(int)), this, SLOT(tabChanged(int))); 
+0

ありがとうなければなりません!出来た。しかし、私の他のシグナルスロット接続は、スロットパラメータの変数名と一緒に働いています。理由は何ですか?再度、感謝します。 – Rikonator

+2

私は同じ問題を抱えていますが、接続に変数名がなく、まだ信号が取り出されていません...どのようなアイデアですか? –

関連する問題