Открытие существующего окна, Открытие нового окна при нажатии на кнопку |
Здравствуйте, гость ( Вход | Регистрация )
Открытие существующего окна, Открытие нового окна при нажатии на кнопку |
kadr |
24.6.2009, 21:50
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 24.6.2009 Пользователь №: 849 Спасибо сказали: 0 раз(а) Репутация: 0 |
Привет всем, подскажите у меня вот такая проблем, надо сделать так что бы при нажатии на кнопке открывался существующий виджет.
QWidget::*widget = new QWidget; widget.show(); создает новый пустой виджет,а мне нужно что бы открывался уже сожданный виджет, как это можно сделать, подскажите! |
|
|
defnull |
24.6.2009, 21:54
Сообщение
#2
|
Студент Группа: Участник Сообщений: 49 Регистрация: 1.5.2008 Пользователь №: 165 Спасибо сказали: 0 раз(а) Репутация: 1 |
Привет всем, подскажите у меня вот такая проблем, надо сделать так что бы при нажатии на кнопке открывался существующий виджет. QWidget::*widget = new QWidget; widget.show(); создает новый пустой виджет,а мне нужно что бы открывался уже сожданный виджет, как это можно сделать, подскажите! Надо сигнал нажатия кнопки соединить со слотом показа виджета тоесть QObject::connect(buttonName, SIGNAL(clicked()), widget, SLOT(show())); widget уже должен существовать к тому моменту как ты соединяешь |
|
|
kadr |
24.6.2009, 22:00
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 24.6.2009 Пользователь №: 849 Спасибо сказали: 0 раз(а) Репутация: 0 |
Надо сигнал нажатия кнопки соединить со слотом показа виджета тоесть QObject::connect(buttonName, SIGNAL(clicked()), widget, SLOT(show())); widget уже должен существовать к тому моменту как ты соединяешь Не совсем понял как это сделать. Виджет у меня называется find_list.ui, кнопка find_date, то есть это должно выглядеть так: QObject::connect(find_date, SIGNAL(clicked()), find_list.ui, SLOT(show())); И само сабой он ругается на то что не find_date не find_list не объявлены, как и где их описать. |
|
|
defnull |
24.6.2009, 22:08
Сообщение
#4
|
Студент Группа: Участник Сообщений: 49 Регистрация: 1.5.2008 Пользователь №: 165 Спасибо сказали: 0 раз(а) Репутация: 1 |
Могу посоветовать почитать Макса Шлее Qt4 Профессиональное программирование на с++ там довольно не плохо описано всё..
у тебя должны быть уже созданы объекты кнопки и виджета которые ты соединяешь... Будет проще если кинешь пример того, что ты пытаешься делать |
|
|
kadr |
24.6.2009, 22:22
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 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())); } Вес код программы я так думаю нет смысла выкладывать! Вот основное окно и окно которое должно открываться из основного при нажатии на ссылке. |
|
|
Litkevich Yuriy |
24.6.2009, 22:45
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
kadr, проделай уроки в "Учебном пособии"
Меньше времени потеряешь на освоении Ещё можешь посмотреть короткий "Шуточный пример" QObject::connect(ui->find_date, SIGNAL(activated()), find_list.ui, SLOT(show())); выделенное странно, как ты это трактуешь?
|
|
|
defnull |
24.6.2009, 22:53
Сообщение
#7
|
Студент Группа: Участник Сообщений: 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. |
|
|
Текстовая версия | Сейчас: 13.1.2025, 20:50 |