QComboBox 动作教程?

Posted

技术标签:

【中文标题】QComboBox 动作教程?【英文标题】:QComboBox Actions Tutorial? 【发布时间】:2016-07-22 01:22:13 【问题描述】:

所以我能找到的每个 QComboBox 教程都使用完全相同的代码,而不是教如何为每个选项执行操作。有人可以推荐我或提供某种教程,了解如何在选择或突出显示选择时发生某些事情吗? (最好两者都有) 另外,请不要标记这个问题,我需要从经验中学习,我在网上找不到任何关于 QComboBox 操作的内容。

【问题讨论】:

【参考方案1】:

听起来您想将 QComboBox 中的项目链接到 QAction?将项目添加到 QComboBox 时,您可以以 QVariant (see QComboBox::addItem) 的形式将自定义用户数据链接到您的项目。然后,您可以通过调用 QComboBox::itemData 访问此用户数据。

在您的情况下,您可以将每个 ComboBox 项目的用户数据设置为指向 QAction 的指针,然后可以通过 QComboBox::itemData 访问该指针

例如:

class boxTest : public QObject

    Q_OBJECT

public:

    QAction * firstAction;
    QAction * secondAction;
    QComboBox *box;
    boxTest();

protected slots:

    void boxCurrentIndexChanged(int);
;

boxTest::boxTest()

    firstAction = new QAction(this);
    firstAction->setText("first action");
    secondAction = new QAction(this);
    secondAction->setText("second action");

    box = new QComboBox(this);
    box->addItem(firstAction->text(), QVariant::fromValue(firstAction)); //add actions
    box->addItem(secondAction->text(), QVariant::fromValue(secondAction));

    connect(box, SIGNAL(currentIndexChanged(int)), this, boxCurrentIndexChanged(int)));



void boxTest::boxCurrentIndexChanged(int index)

    QAction * selectedAction = box->itemData(index, Qt::UserRole).value<QAction *>();
    if (selectedAction)
    
        selectedAction->trigger(); //do stuff with your action
    

【讨论】:

【参考方案2】:

QComboBox 具有currentIndexChanged(int index)highlighted(int index) 信号,当用户更改当前项目并突出显示项目时会发出这些信号。这些信号的参数是高亮/当前项目索引。

要对项目更改/突出显示进行定义和操作,您可以使用userData - 将QVariant 变量添加到每个项目(请参阅void QComboBox::addItem(const QString &amp;text, const QVariant &amp;userData = QVariant()))然后使用QVariant QComboBox::itemData(int index, int role = Qt::UserRole) 在相应插槽中获取此变体,分析此数据并处理任何操作。

【讨论】:

你能提供所有这一切的源代码吗?你能不能让源代码有选择打开一个消息框,它是一个信息框,另一个选项打开一个警告。谢谢!

以上是关于QComboBox 动作教程?的主要内容,如果未能解决你的问题,请参考以下文章

在QT中怎么隐藏QComboBox的下拉列表并当单击QComboBox的编辑框时,就弹出QListWidget窗口

QCombobox & QListWidget - 检查内容

启动时在 QcomboBox 中显示特定项目

qtablewidget加入QcomboBox控件如何读取内容

QT5-控件-QComboBox

QComboBox样式表:字体图标项高