2013-08-19 49 views
2

我已經使用Qt設計器設計GUI,並嘗試創建一個組合框與多個選擇,我注意到,我似乎無法修改通過.UI文件中創建GUI元素通過等效的.CPP文件。Qt5 QComboBox與QCheckBox多選擇器

所以基本上我想知道這是否是一個已知的功能,我需要通過.CPP文件實現GUI,或者我是否沒有正確實施我的多選?我是Qt新手,有點困惑。

我嘗試這樣做,但是當我試圖把現有的應用程序中實現它,它不工作:ComboBox of CheckBoxes?

這裏是我的代碼段。我初始化在Qt Designer中設計的GUI,然後創建一個新模型並根據鏈接的答案爲其分配數據,然後嘗試將我的一個組合框的模型更改爲新模型。當我運行應用程序時,組合框在那裏,但是是空的。

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 

    ... 

    QStandardItemModel model(3, 1); // 3 rows, 1 col 
    for (int r = 0; r < 3; ++r) 
    { 
     QStandardItem* item = new QStandardItem(QString("Item %0").arg(r)); 

     item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); 
     item->setData(Qt::Unchecked, Qt::CheckStateRole); 

     model.setItem(r, 0, item); 
    } 

    ui->comboBox_2->setModel(&model); 
} 
+0

'我試過這個,但是當我嘗試在我現有的應用程序中實現它時,它不起作用:複選框組合框?「您將不得不提供更多關於該組件的信息。什麼不起作用?顯示你嘗試過的一些代碼。 – thuga

+0

我已經運行了其他問題答案本身給出的代碼,當然,當我嘗試創建一個模型時,使用該答案中提供的確切代碼,然後將其分配給現有的組合框我的應用程序框顯示爲空。 (如在,我點擊下拉菜單,沒有任何反應) – T3CHN0CR4T

+0

向我們顯示您的代碼。向我們展示創建模型的部分,添加項目並將其設置爲組合框。 – thuga

回答

0

我設法解決它通過聲明新模型作爲頭文件中的指針,然後實例化它並將其分配給組合框。 :D

+0

您的'QStandardItemModel'對象在您的'MainWindow'構造函數完成後超出了範圍。這就是爲什麼你必須用'new'初始化你的對象。 – thuga

+0

因爲您在組合框中有多個選項,當組合框處於非活動狀態時(當沒有彈出框時)顯示哪個項目? – Aleksandar

+0

@Aleksander我想我只是重新填充它「選擇評估第一」或什麼的。幾個月前完成了這個項目。 – T3CHN0CR4T