Russian Qt Forum

Qt => Общие вопросы => Тема начата: kibsoft от Январь 07, 2010, 00:14



Название: Просмотр сигналов и слотов
Отправлено: kibsoft от Январь 07, 2010, 00:14
Есть примерно такой код:
MainWindow::MainWindow(QWidget *parent):QMainWindow(parent)
{
  usersList=new QListWidget(this);
 mesWindow=new MessageWindow(this);//это объект и у него есть слот setNewMessageWindow
  connect(this>usersList,SIGNAL(itemDoubleClicked(QListWidgetItem*)),mesWindow,SLOT(setNewMessageWindow(QListWidgetItem*));
}

int main(int argc,char* argv[])
{
 MainWindow w1;
  w1.show();
  return app.exec();
}

Но при двойном клике на листвиджете ничего не происходит, т.е. сигнал и слот не соединились..как вообще можно проверить прошел ли connect?


Название: Re: Просмотр сигналов и слотов
Отправлено: BRE от Январь 07, 2010, 00:22
Но при двойном клике на листвиджете ничего не происходит, т.е. сигнал и слот не соединились..как вообще можно проверить прошел ли connect?
connect возвращает bool значение о результате и выводит на консоль диагностические сообщения.


Название: Re: Просмотр сигналов и слотов
Отправлено: kibsoft от Январь 07, 2010, 00:29
connect возвратил true...но при клике ничего не происходит..
Если объект класса MessageWindow создавать в main, то все работает...
int main(int argc,char* argv[])
{
    QApplication app(argc,argv);
    MainWindow w1;

    w1.show();
   MessageWindow w2;
   QObject::connect(w1.usersList,SIGNAL(itemDoubleClicked(QListWidgetItem*)),
                    &w2,SLOT(setNewMessageWindow(QListWidgetItem*)));
    return app.exec();
}
А что неправильно в предыдущем примере?


Название: Re: Просмотр сигналов и слотов
Отправлено: kibsoft от Январь 07, 2010, 00:51
Если в первом посте изменить(просто для примера):
Код:
connect(usersList,SIGNAL(currentRowChanged(int)),
            this,SLOT(showMaximized()));
то все работает, но если:
Код:
connect(usersList,SIGNAL(itemDoubleClicked(QListWidgetItem*)),
            this,SLOT(showMaximized()));
то опять на клики не реагирует...


Название: Re: Просмотр сигналов и слотов
Отправлено: lit-uriy от Январь 07, 2010, 03:23
а ты в свой слот отладочную строку помести, например:
qDebug() << "Jump to slot";

и посмотри в консоли, попадает в слот или нет. Тем самым область поиска проблемы сузишь


Название: Re: Просмотр сигналов и слотов
Отправлено: ilot от Январь 07, 2010, 06:45
А занесены ли в usersList какие-нибудь элементы? Изначально он создается пустым, в приведенных примерах не видно, чтобы в него что-то добавлялось. Если вы делаете двойной щелчок по пустому списку, то сигнал itemDoubleClicked просто не будет генерироваться.


Название: Re: Просмотр сигналов и слотов
Отправлено: kibsoft от Январь 07, 2010, 12:46
usersList заполнен..в слот не заходит..listwidget вообще не реагирует на клики и даже не выделяет элемент списка.. хотя при создании объектов в main() все отлично работает(3 пост)...