c++ - QComboBox 的鼠标按下槽 - 如果用户单击组合框,则动态填充项目

标签 c++ qt qcombobox

在 Qt QComboBox 中,没有点击信号来覆盖插槽。但我需要动态填充组合框项目。也就是说,我需要检查项目并更新组合框的所有项目列表(当用户更改其他项目时应该对列表产生影响)。

最佳答案

对于这个复杂的问题,我们可以使用qt中的事件过滤方法。尝试为所有操作返回 false 以使进一步的过程发生。

bool QtMyWindow::eventFilter(QObject *f_object, QEvent *f_event){
    if(f_object == ui->comboBoxResetValue){
        if(f_event->type() == QEvent::MouseButtonPress){
            fillItems(); // try to clear before fill to avoid repetitions
        }
        return false;
    }
    return false;
}

并且我们还通知对象我们将为您过滤事件,因此在构造函数中,包括这一行

QtMyWindow::QtMyWindow(QObject* parent,...)
{
    ...
    ui->comboBox->installEventFilter(this);
}

关于c++ - QComboBox 的鼠标按下槽 - 如果用户单击组合框,则动态填充项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33773368/

相关文章:

c++ - 在整个范围内均匀生成随机数

c++ - 在 C++ 代码中使用 C 定义的结构

c++ - 为单选按钮创建组

c++ - Qt模型-在单独的线程中查看数据和模型

python - 使用 QComboBox 的 QTableView 模型

c++ - 如何在数据更改时强制模型更新 QComboBox?

c++ - 如何使用 C/C++ 通过 gRPC 发送字节数据?

c++ - 如何在 Windows Mobile 的 MFC 对话框中更改字体/颜色?

Qt 在两个 QListWidget 之间拖放

python - QComboBox 项目文本在 Windows 上被截断