Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ сигналs QTabWidget

Автор: denis 14.8.2009, 14:56

Просьба, помочь найти (или реализовать?) сигнал о смене вкладок в QTabWidget.

Автор: AD 14.8.2009, 15:01

Цитата(denis @ 14.8.2009, 15:56) *
Просьба, помочь найти (или реализовать?) сигнал о смене вкладок в QTabWidget.

currentChanged(int)

Автор: denis 17.8.2009, 8:05

в хелпе я про него вычитал, но воспользоваться не получается. если не трудно, пожалуйста проконсультируйте. использую так:

TabDialog::TabDialog(QWidget *parent) : QDialog(parent){
...
AnagramPage *anagramPage = new AnagramPage;
DictPage *dictPage = new DictPage;
tabWidget = new QTabWidget;
tabWidget->addTab(anagramPage, tr("Anagram"));
tabWidget->addTab(dictPage, tr("Dictionary"));
...
connect(tabWidget, SIGNAL(currentChanged()), this, SLOT(changeStatusBar(tr("Ready11."))));
...
}

void TabDialog::changeStatusBar(QString &message){
statusBar->showMessage(message);
}

но при переключении вкладок слот не вызывается.

Автор: BRE 17.8.2009, 8:17

Цитата(denis @ 17.8.2009, 9:05) *
в хелпе я про него вычитал, но воспользоваться не получается. если не трудно, пожалуйста проконсультируйте.

Сигнал currentChanged имеет параметр int.
Слот changeStatusBar - передавать строку в connect нельзя, там указываются только типы параметров.

    connect(tabWidget, SIGNAL(currentChanged( int )), this, SLOT(changeMessage(int)));

void MyWidget::changeMessage( int page )
{
    QString str;
    switch( page )
    {
    case 0:    str = tr( "Page 0" );        break;
    case 1:    str = tr( "Page 1" );        break;
    ...
    }
    changeStatusBar( str );
}

Автор: denis 17.8.2009, 8:37

спасибо, за пояснение.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)