我正在制作一个简单的Qt应用程序。它有4个屏幕/页面:
我无法找出实现这一目标的最佳方法。我开始使用QWidget,但很快就无法管理。
QWizard是否受限制?
编辑:QWizard的部分问题是它似乎总是有“后退”和“下一步”按钮。我不希望这些作为这个程序中的选项,所以这让我相信一个向导并不是我所追求的。
答案 0 :(得分:5)
我认为QWizardPage是你最好的选择。
您可以在QWizard页面上使用setCommitPage(True)
禁用“后退”。
您还必须在第2步和第4步之间覆盖“{变量”数量的QWizardPages {。}}。
答案 1 :(得分:5)
我在这里使用QWizard
略有不同意见。这样做很容易,但在这种情况下,我认为使用QStackedWidget
并根据您希望用户能够执行的操作交换显示的小部件可能更容易。这很可能是QWizard
内部所做的,没有一些运行按钮和前后移动的复杂功能。您也可能想看一下他们正在考虑添加的状态机内容,因为您的应用程序可以很容易地分成几个状态。
答案 2 :(得分:1)
您可以为屏幕制作QWizardPages并将其添加到QWizard。使用registerField(),您可以注册字段以在页面之间进行通信。
编辑: 我没有测试这个,但我想你可以控制QWizard的按钮布局 setButtonLayout
答案 3 :(得分:0)
在顶部创建一个“开始导入”按钮的对话框。当用户点击此内容时:
填充QFormLayout
:
布局应该有一个复选框,标签是要导入的图片的名称。我不确定您的要求,但您也可以显示图像的缩略图。
用户只需检查他想要的图像。
然后在底部有一个“保存...”按钮。当用户单击此按钮时,将显示“另存为”对话框。保存所有已检查的图像,丢弃其他图像。
如果没有图像,请将“保存...”按钮文本更改为“确定”,并显示带有“无图像”字符串的QLabel
。您可以使用QStackedWidget
在<{1}}和QLabel
之间切换。
在QFormLayout
:http://doc.trolltech.com/qq/qq25-formlayout.html
选项:摆脱“开始导入”按钮。让应用程序在启动时自动填充QFormLayout(如果足够快,可能在构造函数中)。