如何在QListWidget中设置所选项?

use*_*285 8 qt qlistwidget

我使用下面的代码向listwidget添加两个项目.现在我想将"Weekend Plus"设置为listwidget中的选定项目,我该怎么做?

QStringList items;    
items << "All" << "Weekend Plus" ;   
ui->listWidgetTimeSet->addItems(items);
Run Code Online (Sandbox Code Playgroud)

Exa*_*Exa 18

你可以这样做:

QStringList items;
items << "All" << "Weekend Plus" ;
listWidgetTimeSet->addItems(items);
listWidgetTimeSet->setCurrentRow( 1 );
Run Code Online (Sandbox Code Playgroud)

但这意味着你知道"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 );
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.

编辑:

根据您的评论,我建议使用项目视图的编辑触发器.它允许您直接添加项目,只需键入要添加的内容并按回车键或输入键即可.您刚添加的项目已被选中,现在显示为QListWidget中的项目.

listWidgetTimeSet->setEditTriggers( QAbstractItemView::DoubleClicked ); // example
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅文档.

如果你想在其他地方输入你的新物品,当然也有办法.假设您有一个行编辑,并添加了您在其中输入的名称.现在,您希望已添加项目的ListWidget更改为该新项目.假设新项目位于最后一个位置(因为它已在最后添加),您可以将当前行更改为最后一行.(注意,count()如果你有任何隐藏物品也会计算)

listWidgetTimeSet->setCurrentRow( listWidgetTimeSet->count() - 1 ); // size - 1 = last item
Run Code Online (Sandbox Code Playgroud)


red*_*ynx 7

也许

    ui->listWidgetTimeSet->item(1)->setSelected(true);
Run Code Online (Sandbox Code Playgroud)

试试吧

    ui->listWidgetTimeSet->setCurrentRow(1);
Run Code Online (Sandbox Code Playgroud)