Здравствуйте, гость ( Вход | Регистрация )
Steklova Olga | Дата 3.3.2012, 19:27 |
Ov3r1oad, а не проще ли тогда вместо использования QProgressDialog создать просто виджет, на котором разместить QProgressBar и QLabel? И делайте тогда с ними, что хотите |
|
Ov3r1oad | Дата 2.3.2012, 17:08 |
Steklova Olga, ну так а как сделать так, чтобы по кнопке cancel он не закрывался? Собственно, в этом был вопрос. | |
Steklova Olga | Дата 2.3.2012, 16:49 |
Ov3r1oad, 1) код показывайте так: [*expand=main.cpp][*code]код модуля[*/code][*/expand] вместо символа * ничего не должно быть 2) у меня получился такой пример: test_closeevent.pro
main.cpp
mainwindow.h
mainwindow.cpp
myprogressdialog.h
myprogressdialog.cpp
|
|
Ov3r1oad | Дата 2.3.2012, 15:07 |
UPD: а, оказывается, данный ивент не вызывается при нажатии на кнопку, только при нажатии на крестик (ну либо ещё что-то). | |
Ov3r1oad | Дата 2.3.2012, 14:32 |
class MyDialog: public QProgressDialog { Q_OBJECT public: MyDialog(QWidget* parent); void closeEvent (QCloseEvent *event); }; class MyClass { public: MyDialog Dialog; }; void MyDialog::closeEvent(QCloseEvent* event) { event->ignore(); } class MyDialog: public QProgressDialog { Q_OBJECT public: MyDialog(QWidget* parent); void closeEvent (QCloseEvent *event); }; class MyClass { public: MyDialog Dialog; }; void MyDialog::closeEvent(QCloseEvent* event) { event->ignore(); } сорь, чё-то не тот тег прописал =) |
|
Steklova Olga | Дата 2.3.2012, 14:22 |
Ov3r1oad, код покажите. | |
Ov3r1oad | Дата 2.3.2012, 14:18 |
Steklova Olga, хм, написал отдельный класс MyProgressDialog c переопределённым методом void closeEvent(QCloseEvent *event). В нём банально поставил event->ignore(). По идеи, теперь окно у меня вообще не должно закрываться, но почему-то не работает. Окошко реагирует также, как будто я ничего и не писал. | |
Steklova Olga | Дата 2.3.2012, 12:36 |
Ov3r1oad, QProgressDialog пока не использовала. Но есть чудная вещь под названием "Справка". Смотрите: void QProgressDialog::closeEvent ( QCloseEvent * e ) [virtual protected] Reimplemented from QWidget::closeEvent(). void QWidget::closeEvent ( QCloseEvent * event ) [virtual protected] This event handler is called with the given event when Qt receives a window close request for a top-level widget from the window system. By default, the event is accepted and the widget is closed. You can reimplement this function to change the way the widget responds to window close requests. For example, you can prevent the window from closing by calling ignore() on all events. Main window applications typically use reimplementations of this function to check whether the user's work has been saved and ask for permission before closing. For example, the Application Example uses a helper function to determine whether or not to close the window: void MainWindow::closeEvent(QCloseEvent *event) { if (maybeSave()) { writeSettings(); event->accept(); } else { event->ignore(); } } See also event(), hide(), close(), QCloseEvent, and Application Example. Можно создать "Действие" (QAction), назначить ему комбинацию горячих клавиш. И установить это Действие для виджета (QWidget->setAction(...)), который видно в начальный момент времени. ИМХО у QWidget нет setAction. При создании действия указывается его родитель, например виджет: action = new QAction(parent_widget); |
|
Ov3r1oad | Дата 2.3.2012, 11:58 |
Steklova Olga, это QProgressDialog, на нём только одна кнопка. Я просто думал, может есть какой-то хинт, чтобы окно не закрывалось. По сути, мне надо, чтобы при нажатии на одну и ту же кнопку, окно сначала не закрывалось, а потом (если опять нажать на эту кнопку), оно закрылось. | |
Steklova Olga | Дата 2.3.2012, 11:55 |
Цитата(Ov3r1oad) как сделать так, чтобы после нажатия на кнопку окно не закрывалось? На какую кнопку и какое окно?Если у вас диалоговое окно и на нем QDialogButtonBox с кнопками, для которых заданы роли QDialogButtonBox::AcceptRole и QDialogButtonBox::RejectRole, то, конечно, при нажатии на такую кнопку окно закроется. Не делайте родителем кнопки QDialogButtonBox, и будет вам счастье |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 0:05 |