Открытие существующего окна, Открытие нового окна при нажатии на кнопку |
Здравствуйте, гость ( Вход | Регистрация )
Открытие существующего окна, Открытие нового окна при нажатии на кнопку |
kadr |
24.6.2009, 21:50
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 24.6.2009 Пользователь №: 849 Спасибо сказали: 0 раз(а) Репутация: 0 |
Привет всем, подскажите у меня вот такая проблем, надо сделать так что бы при нажатии на кнопке открывался существующий виджет.
QWidget::*widget = new QWidget; widget.show(); создает новый пустой виджет,а мне нужно что бы открывался уже сожданный виджет, как это можно сделать, подскажите! |
|
|
kadr |
24.6.2009, 22:22
Сообщение
#2
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 24.6.2009 Пользователь №: 849 Спасибо сказали: 0 раз(а) Репутация: 0 |
Одним словом я пытаюсь сделать так, что бы при нажатии на ссылку Поиск по дате в меню Действия, скрин которого я выкладываю, открывалось новое окно которое называется find_list.ui - виджет, вот впринципе и все что мне нужно узнать!
void MainWindow::on_find_date_activated() { QWidget *find_list = new QWidget; QObject::connect(ui->find_date, SIGNAL(activated()), find_list.ui, SLOT(show())); } Вес код программы я так думаю нет смысла выкладывать! Вот основное окно и окно которое должно открываться из основного при нажатии на ссылке. |
|
|
defnull |
24.6.2009, 22:53
Сообщение
#3
|
Студент Группа: Участник Сообщений: 49 Регистрация: 1.5.2008 Пользователь №: 165 Спасибо сказали: 0 раз(а) Репутация: 1 |
Есть несколько соображений.. надеюсь я правильно всё понял
1) Если уж вы создаёте объект в слоте, то можно реализовать новое окно в качестве QDialog и вызывать его методом exec (если вам нужно блокирующее модальное окно). тоесть как-то так void MainWindow::on_find_date_activated() { QDialogClass *find_list = new QDialogClass(); find_list->exec(); delete find_list; } в примере выше QDialogClass это класс который наследуется от вашей Ui формы и от QDialog. После того как вызывается ecex выполнение функции останавливается и не действует до тех пор пока вы не закроете окно. 2) Если вы не хотите блокирующее окно а хотите просто его показать, то сам объект нужно создавать до вызова слота, например в конструкторе MainWindow. и там же его соединять с менюшкой. Тогда сам слот on_find_date_activated() и не понадобится... Я не могу понять запись QWidget *find_list = new QWidget; QObject::connect(ui->find_date, SIGNAL(activated()), find_list.ui, SLOT(show())); вы создали новый виджет find_list а потом обращаетесь почему-то к find_list.ui. что вы этим хотели сделать? Если форму которая является виджетом, то я бы посоветова создать класс например MyWidget который бы наследовал QWidget и нужную Ui. |
|
|
Текстовая версия | Сейчас: 15.1.2025, 2:03 |