2017-01-27 90 views
0

系统: 红帽企业Linux 7.2 Qt Creator的4.1.0 的Qt 5.6.1Qt的复选框,单选按钮不会显示

所以,当我使用Qt Creator中建立一个GUI一切看起来都很好。但是,一旦我编译并运行复选框并单选按钮消失,按按钮看起来就像标签。

我已经使用样式表来修复使用边框和渐变的按钮,但我似乎无法弄清楚复选框或单选按钮。

#include <QApplication> 
#include <QWidget> 
#include <QCheckBox> 
#include <QVBoxLayout> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    QWidget w; 
    QCheckBox* box = new QCheckBox(); 
    box->setText("BLARG"); 
    QVBoxLayout* layout = new QVBoxLayout; 
    layout->addWidget(box); 
    w.setLayout(layout); 
    w.show(); 
    return a.exec(); 
} 

[![minmal范例] [1] [1]

这似乎并没有被引起太多的问题还是我的谷歌福是弱,因为我无法找到的例子任何其他人有这个问题。那么,有人知道为什么会发生这种情况吗?是唯一的解决方案,用我自己的图像替换复选框和单选按钮使用样式表?我现在要这样做,但如果可能的话,宁愿以正确的方式做到这一点。

更新1: 只是因为我应该知道更好,我继续前进,并更新Qt到最新和最大的5.8.0。仍然有同样的问题。

更新2: 所以,事实证明,Qt造物主正在行动起来。当程序神秘地停止了构建,因为我没有在系统上安装Android NDK,我发现Qt的流氓安装存在于/ lib64中。理论上,它是针对一个版本进行编译,并试图与其他动态链接导致未定义的行为。

从Creator工具包中清除所有Qt版本的所有痕迹后,一切都像魅力一样。 Qt Creator的自动检测功能似乎只是一个比可靠的阴影还差的已知问题。我现在在我的工具箱中添加了一个新的故障排除步骤。

+0

你的代码在我的机器上工作。 –

+0

@ m.c。我现在也是。所以,事实证明,Qt Creator正在使用Qt的一个版本进行编译和编译,并针对另一个版本运行。一旦我发现系统上有一个流氓版本的Qt被我消灭了,安慰了Qt Creator直到它开始行事为止,一切都很顺利。 – soulsabr

+1

我建议你只需发布这个答案,而不是编辑标题解决。 :) – rbaleksandar

回答

0

所以,事实证明,Qt造物主在起作用。当程序神秘地停止了构建,因为我没有在系统上安装Android NDK,我发现Qt的流氓安装存在于/ lib64中。理论上,它是针对一个版本进行编译,并试图与其他动态链接导致未定义的行为。

从Creator工具包中清除所有Qt版本的所有痕迹后,一切都像魅力一样。 Qt Creator的自动检测功能似乎只是一个比可靠的阴影还差的已知问题。我现在在我的工具箱中添加了一个新的故障排除步骤。

+1

第2步:将其标记为答案。 :D – rbaleksandar

+1

@rbaleksandar步骤1.5:等待强制性的2天。 :P – soulsabr

+2

:D你说得对。总是忘记这一点。 – rbaleksandar