Q维扎德:后退按钮上的确认
QWizard: Confirmation on back button
我通过子类化QWizard创建了一个向导,并通过子类化QWizardPage创建了向导的页面。
我想在用户按">后退"按钮时显示一个确认对话框,如果用户在确认对话框中按"否",我希望我的向导不会转到上一页。
在 QWizard 对话框中单击下一步时,将调用虚拟函数bool validatePage()
,如果我们不想转到下一页(例如,当字段不完整时(,则允许返回 false。
但是,当按下返回时,我不知道有什么方法可以说"不要回去"。虚拟函数void cleanupPage()
被调用(我可以在这里要求用户确认(,但向导还是会返回。
可以这样做吗?
提前谢谢。
我终于通过断开后退按钮信号并将其连接到我的自定义插槽来实现我想要的(不确定这是最好的方法......(。
MyWizard::MyWizard(QWidget *parent) : QWizard(parent)
{
// [...]
connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(onPageChanged(int)));
}
void MyWizard::onPageChanged(int id)
{
disconnect(button(BackButton), SIGNAL(clicked(bool)), 0, 0);
connect(button(BackButton), SIGNAL(clicked(bool)), this, SLOT(onBackButtonClicked()));
}
void MyWizard::onBackButtonClicked()
{
if (currentId() > Page_Intro && !confirmation(tr("Are you sure you want to go back?")))
return;
back();
}
请注意,如果您在向导构造函数上执行连接/断开连接,它不起作用(Qt 在传递第一页时连接它(。
尝试使用void QWizardPage::setCommitPage(bool commitPage(函数来做到这一点。此功能可防止用户返回页面。在向导的cleanupPage((上设置它:
MyWizard::cleaupPage(int id)
{
//Test here if 'id' is the page that you want and the do the following
if(QMessageBox::question(...) == QMessageBox::Yes)
this->page(id)->setCommitPage(false);
else
this->page(id)->setCommitPage(true);
}
相关文章:
- 问:如何使用C++中的按钮从窗口打开窗口
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何确认我的constexpr表达式实际上已经在编译时执行
- QML按钮点击功能执行顺序
- 当用户超过按钮点击限制时报告
- 函数计算用户按下按钮的频率
- 热键/按钮,根据需要进行编译,但不运行(在F5和Ctrl+Shift+B之间)
- FLTK:按下哪个按钮 - 将数字传递给按钮的回调 (lambda)
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- Qt自定义QPush按钮未显示在布局上
- SDL 操纵杆按钮按下/C++
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- Qt中来自不同功能的按钮引用
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- ImGui 在单击按钮后冻结
- WinAPI 无法创建按钮
- 按钮悬停在 QT 中垂直布局的选项卡小部件中不起作用
- Q维扎德:后退按钮上的确认
- 如何在适用于android的cocos2d中显示带有确认消息和是/否按钮的UIAlertView