Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Несколько слотов на кнопку.


Автор: papochka 21.9.2010, 20:05
Может быть я повторюсь, тк задавал этот вопрос на другом форуме. Но...

Привет!
Тут такое дело.
Вобщем, есть кнопка, при нажатии на неё, вызывается диалог(плейлист).
Так вот, как сделать, чтобы при повторном нажатии, плейлист закрывался?

Сейчас есть такое:
Код

 QPushButton *ButtonPList = new QPushButton("Playlist");
    ListWidget *playlist = new ListWidget;    //Это мой диалог(плейлист)
 
    connect(ButtonPList, SIGNAL(clicked()), playlist,SLOT(show()));


Автор: SABROG 21.9.2010, 20:48
Вариант 1. Вместо show() подставить свой слот и в нем проверять, если диалог открыт, то закрывать его.
Вариант 2. Использовать метод setCheckable(true) для QPushButton. Затем подключить сигнал clicked(bool) кнопки к слоту setVisible(bool) диалога.
Вариант 3. Использовать The State Machine Framework.

Автор: papochka 21.9.2010, 21:27
Цитата(SABROG @  21.9.2010,  20:48 Найти цитируемый пост)
Вариант 2. Использовать метод setCheckable(true) для QPushButton. Затем подключить сигнал clicked(bool) кнопки к слоту setVisible(bool) диалога.


Сделал так:

Код

 QPushButton *ButtonPList = new QPushButton("Playlist");
    ListWidget *playlist = new ListWidget;

    ButtonPList->setCheckable(true);
    connect(ButtonPList, SIGNAL(clicked(bool)),playlist, SLOT(setVisible(bool)));



Спасибо огромное, работает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)