【问题标题】:How do I set the selected item in a QListWidget?如何在 QListWidget 中设置所选项目?
【发布时间】:2011-06-06 08:57:02
【问题描述】:

我正在使用下面的代码将两个项目添加到列表小部件。现在我想将“Weekend Plus”设置为列表小部件中的选定项,我该怎么做?

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

【问题讨论】:

    标签: qt qlistwidget


    【解决方案1】:

    你可以这样做:

    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
    

    更多信息请参见the docs

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

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

    【讨论】:

    • 谢谢它的工作。现在假设我有一个文本框,当我在其中输入文本并说添加它被添加到列表框时,我希望我添加到列表框中的文本应该被选中。跨度>
    • 你设置的是当前项,而不是选中项。它们是不同的概念。当前项目是通过制表符或光标操作移动的。选择是通过选择模型设置的。
    【解决方案2】:

    也许

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

    也试试

        ui->listWidgetTimeSet->setCurrentRow(1);
    

    【讨论】:

    • 第一个对我有用,但第二个没有,IDK 为什么。赞成
    猜你喜欢
    • 1970-01-01
    • 2020-10-12
    • 2018-04-22
    • 2016-11-24
    • 2017-05-21
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多