簡體   English   中英

如何在 QListWidget 中設置所選項目?

[英]How do I set the selected item in a QListWidget?

我正在使用下面的代碼將兩個項目添加到列表小部件。 現在我想將“Weekend Plus”設置為列表小部件中的選定項目,我該怎么做?

QStringList items;    
items << "All" << "Weekend Plus" ;   
ui->listWidgetTimeSet->addItems(items);

你可以這樣做:

QStringList items;
items << "All" << "Weekend Plus" ;
listWidgetTimeSet->addItems(items);
listWidgetTimeSet->setCurrentRow( 1 );

但這意味着你知道“Weekend Plus 在第二排,你需要記住這一點,以防你有其他項目。

或者你這樣做:

QListWidgetItem* all_item = new QListWidgetItem( "All" );
QListWidgetItem* wp_item = new QListWidgetItem( "Weekend Plus" );
listWidgetTimeSet->addItem( all_item );
listWidgetTimeSet->addItem( wp_item );
listWidgetTimeSet->setCurrentItem( wp_item );

希望有幫助。

編輯:

根據您的評論,我建議對項目視圖使用編輯觸發器。 它允許您直接添加項目,只需鍵入要添加的內容並按回車鍵或回車鍵即可。 您剛剛添加的項目被選中,現在顯示為 QListWidget 中的一個項目。

listWidgetTimeSet->setEditTriggers( QAbstractItemView::DoubleClicked ); // example

有關更多信息,請參閱文檔

如果您想在其他地方輸入新項目,當然也有辦法。 假設您進行了行編輯,並使用您在此處輸入的名稱添加了項目。 現在,您希望已添加項目的 ListWidget 更改為該新項目。 假設新項目在最后一個 position 上(因為它是最后添加的)您可以將當前行更改為最后一行。 (請注意,如果您有任何隱藏項目, count()也會計算隱藏項目)

listWidgetTimeSet->setCurrentRow( listWidgetTimeSet->count() - 1 ); // size - 1 = last item

也許

    ui->listWidgetTimeSet->item(1)->setSelected(true);

也試試

    ui->listWidgetTimeSet->setCurrentRow(1);

使用原始文本設置當前 QList raw:

ui->List->setCurrentItem(ui->List->findItems("Raw x Content",Qt::MatchExactly)[0]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM