QDialog 在添加新小部件时将小部件涂成黑色

Posted

技术标签:

【中文标题】QDialog 在添加新小部件时将小部件涂成黑色【英文标题】:QDialog paints widgets black when adding new ones 【发布时间】:2013-10-08 05:53:26 【问题描述】:

我正在写一个QDialog 以允许从我的程序的其余部分导出数据。对话会根据之前给出的答案提出一系列问题。可以提出三种不同类型的问题,QComboBoxQListQCheckbox。显示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 并将其添加到布局中,它本身只是一个包含标签和所需小部件类型的小部件。 【参考方案1】:

感谢大家的帮助,但结果证明这是一个错误的样式表。

【讨论】:

以上是关于QDialog 在添加新小部件时将小部件涂成黑色的主要内容,如果未能解决你的问题,请参考以下文章

Gridstack - 添加带有内容的新小部件

将小部件名称与小部件一起添加到主屏幕

如何有条件地将小部件添加到列表中?

Qt将小部件添加到GraphicsView?

尝试将小部件添加到 QTabWidget 时出错

如何将小部件动态添加到网格?