2017-01-27 58 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