利用QComboBox的鼠标点击事件,触发选项更新。具体方式为覆写主窗体的eventFilter函数。
1.在MainWindow头文件中加入:
private slots:
bool eventFilter(QObject *watched, QEvent *event);
2. 在MainWindow构造函数中安装QComboBox的事件过滤器:
ui->comboBoxSerialPort->installEventFilter(this);
3. 实现该函数:
bool MainWindow::eventFilter(QObject *watched, QEvent *event)
{
if(event->type() == QEvent::MouseButtonPress)
{
if(watched == ui->comboBoxSerialPort)
{
QComboBox* comboBox = qobject_cast<QComboBox *>(watched);
comboBox->clear();
QList<QSerialPortInfo> serials = QSerialPortInfo::availablePorts();
foreach (QSerialPortInfo info, serials)
{
comboBox->addItem(info.portName());
}
}
}
return QMainWindow::eventFilter(watched, event);
}
Qt | QComboBox点击时自动更新列表(自动刷新QSerialPort)_雍正不秃头的博客-CSDN博客_qcombobox点击事件