如何设计线性GUI程序

时间:2009-05-13 19:11:09

标签: user-interface qt

我正在制作一个简单的Qt应用程序。它有4个屏幕/页面:

  1. 开始导入
  2. 选择要将图像导入
  3. 的文件夹
  4. 接受或拒绝文件夹中的每个图像,当没有图像时:
  5. “没有剩下的图像”和一个OK按钮。
  6. 我无法找出实现这一目标的最佳方法。我开始使用QWidget,但很快就无法管理。

    QWizard是否受限制?

    编辑:QWizard的部分问题是它似乎总是有“后退”和“下一步”按钮。我不希望这些作为这个程序中的选项,所以这让我相信一个向导并不是我所追求的。

4 个答案:

答案 0 :(得分:5)

我认为QWizardPage是你最好的选择。

您可以在QWizard页面上使用setCommitPage(True)禁用“后退”。

您还必须在第2步和第4步之间覆盖“{变量”数量的QWizardPages {。}}。

答案 1 :(得分:5)

我在这里使用QWizard略有不同意见。这样做很容易,但在这种情况下,我认为使用QStackedWidget并根据您希望用户能够执行的操作交换显示的小部件可能更容易。这很可能是QWizard内部所做的,没有一些运行按钮和前后移动的复杂功能。您也可能想看一下他们正在考虑添加的状态机内容,因为您的应用程序可以很容易地分成几个状态。

答案 2 :(得分:1)

here(基本)和here是QWizards的示例。

您可以为屏幕制作QWizardPages并将其添加到QWizard。使用registerField(),您可以注册字段以在页面之间进行通信。

编辑: 我没有测试这个,但我想你可以控制QWizard的按钮布局 setButtonLayout

答案 3 :(得分:0)

在顶部创建一个“开始导入”按钮的对话框。当用户点击此内容时:

填充QFormLayout

布局应该有一个复选框,标签是要导入的图片的名称。我不确定您的要求,但您也可以显示图像的缩略图。

用户只需检查他想要的图像。

然后在底部有一个“保存...”按钮。当用户单击此按钮时,将显示“另存为”对话框。保存所有已检查的图像,丢弃其他图像。

如果没有图像,请将“保存...”按钮文本更改为“确定”,并显示带有“无图像”字符串的QLabel。您可以使用QStackedWidget在<{1}}和QLabel之间切换。

QFormLayouthttp://doc.trolltech.com/qq/qq25-formlayout.html

上查看此文章

选项:摆脱“开始导入”按钮。让应用程序在启动时自动填充QFormLayout(如果足够快,可能在构造函数中)。