Russian Qt Forum
Ноябрь 26, 2024, 02:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt Designer не могу разобраться  (Прочитано 6660 раз)
melifaro
Гость
« : Февраль 26, 2009, 22:27 »

Создаю в дизайнере форму на основе mainwindow, там же добавляю menuBar - menu1 - act_close, хочу чтобы по клику в меню по пункта "close" форма закрывалась...

1) в самом дизайнере не получилось т.к. связь сигнал - слот тянется только от самого menuBar'a, а не от отдельного QAction'a, в итоге форма закрывается при выборе любого пункта меню.
2) хотел связать в конструкторе, написать что-то типа connect(ui->menuBar->menu1->act_close,SIGNAL(click()),this,close()); но не смог найти даже menu1.

Помогите понять оба способа, видимо я что-то не нашел или не понял.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Февраль 26, 2009, 22:38 »

1) В дизайнере открываем Signal/Slot Editor, Добавляем новый коннект. Устанавливаем Sender - act_close, Signal - triggered(), Receiver - mainwindow, Slot - close().

Но лично мне не нравится создавать коннекты в дизайнере, лучше юзать способ 2)

2) И коннектить в конструкторе:

    connect(ui->act_close,SIGNAL(triggered()),this,close());
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
melifaro
Гость
« Ответ #2 : Февраль 26, 2009, 23:00 »

1) Как добавить новый коннект? Кроме способа зажатия мышки на каком-то виджете и перетаскивания на другой, я никакого не видел

2) большое спасибо, всё оказалось проще чем я мог себе представить)
« Последнее редактирование: Февраль 26, 2009, 23:03 от melifaro » Записан
spirit
Гость
« Ответ #3 : Февраль 27, 2009, 09:26 »

1) Как добавить новый коннект? Кроме способа зажатия мышки на каком-то виджете и перетаскивания на другой, я никакого не видел

в дизайнере есть Signal/Slot Editor вот там можно коннектов и нашарашить.
Записан
AAXEE
Гость
« Ответ #4 : Февраль 27, 2009, 20:11 »

Но лично мне не нравится создавать коннекты в дизайнере, лучше юзать способ 2)
В этом есть что-то трушное=) Мне тоже не нравится.
Записан
lex_newton
Гость
« Ответ #5 : Февраль 28, 2009, 16:54 »

Есть еще третий - интересный способ, о котором редко вспоминают. Но зачастую он оказывается весьма удобным Подмигивающий

В этом третьем случае не требуется писать connect(...). Необходимо лишь создать метод класса со строго определенным именем. Вот пример кода:

Код:
class CMainWindow : public QMainWindow, public Ui::MainWindow
{
Q_OBJECT
public:
CMainWindow( QWidget * parent = 0, Qt::WFlags f = 0 );
private slots:
void on_action_item1_triggered();
};

CMainWindow::CMainWindow( QWidget * parent, Qt::WFlags f)
: QMainWindow(parent, f)
{
setupUi(this);
}
//

void CMainWindow::on_action_item1_triggered()
{
close();;
}

Здесь, action_item1 - это QAction, а triggered() - это испускемый этим QAction сигнал.
Таким образом можно задать слот для любого сигнала.
В этом случае коннект будет создается автоматически moc препроцессором.
Записан
Rcus
Гость
« Ответ #6 : Февраль 28, 2009, 17:02 »

зашибись третий вариант Улыбающийся в первом варианте строка коннекта генерируется автоматически и выполняется в setupUi, во втором мы ее пишем сами и выполняем в конструкторе, а в третьем вместо одной пишем 6 строк
Записан
lex_newton
Гость
« Ответ #7 : Февраль 28, 2009, 17:09 »

зашибись третий вариант Улыбающийся в первом варианте строка коннекта генерируется автоматически и выполняется в setupUi, во втором мы ее пишем сами и выполняем в конструкторе, а в третьем вместо одной пишем 6 строк
Ну дык разумеется, что это решение не для close(), который, сам по себе уже является слотом.
Но знания такой возможности автору темы пригодится.
Записан
Yar
Гость
« Ответ #8 : Март 11, 2009, 10:21 »

А не подскажете как в дизайнере добавлять connect?
Я по кнопке F4 повесил click, но как указать что по этому событию делать?
Записан
spirit
Гость
« Ответ #9 : Март 11, 2009, 10:23 »

в дизайнере есть "Signal/Slot Editor" так можно создавать коннекты.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.081 секунд. Запросов: 23.