【发布时间】:2013-10-08 05:53:26
【问题描述】:
我正在写一个QDialog 以允许从我的程序的其余部分导出数据。对话会根据之前给出的答案提出一系列问题。可以提出三种不同类型的问题,QComboBox、QList 或 QCheckbox。显示QComboBox的时候没问题,但是显示其他两个的时候,会导致其他的小部件被涂黑。
http://imgur.com/GCe9YgA [作品] http://imgur.com/biefPir [无效]
ExportOption* option = new ExportOption(question, type, nullptr);
ui_->optionsLayout_->insertWidget(shownOptions_.size(), option);
adjustSize();
这仅在对话框需要调整大小时发生,如果有足够的空间开始,它不会显示为黑色。此外,每当对话框因调整大小或任何其他原因而重绘时,它都会得到修复,但如果我在对话框或其子对话框上手动调用 update\repaint,似乎什么都没有发生。
我认为我缺少一些相当简单的东西。
我在 Windows 上使用 Qt5.1。
【问题讨论】:
-
你能展示你的 adjustSize() 方法吗?
-
adjustSize()方法是
QWidget提供的方法。 -
对不起。多年来没有做过 QWidget,自从 QML 出现以来就没有。
-
当您更改要显示的对话框类型时,您是否正在添加/删除小部件?如果是这样,请尝试创建一个包含所有小部件的对话框,然后根据需要隐藏和显示您需要的小部件。
-
可能会这样。我希望不要走那条路,因为对话框不应该知道驱动它的模型(它可以导出一些不同的东西)。每次给出答案时都会创建一个
ExportOption并将其添加到布局中,它本身只是一个包含标签和所需小部件类型的小部件。