QComboBox 与 QMessageBox 有不相关的行为

QComboBox has unrelated behavior with QMessageBox

在用户界面上,可以使用 QPushButton 在 QGraphicScene 上上传图像。此外,在同一界面上,我有一个 QCombobox,它在上传图像后对图像进行一些操作。我正在设置用户界面,以便如果我在上传任何图像之前尝试使用组合框,则会弹出 QMessage 警告,告诉用户上传图像。它几乎可以工作,问题是它重置了 QCombobox 但再次要求上传图像。我觉得是进入了两次循环,一直在纠错中。

回顾一下:我打开界面,尝试使用ComboBox;没有上传图片,弹出QMessageBox提示用户上传图片; Combobox 自动重置初始值 [在我的例子中称为 "Chose operations"] 但现在弹出另一个 QMessageBox 询问相同的而不是一次。

下面的代码部分我认为它导致了这个: mainwindow.cpp

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->leftPreview->setText("<b>No Image Set!</b>");

    points.clear();
    currentSelection = -1; // used to detect if images have been uploaded on QListWidget
}


void MainWindow::on_primarySubComboBoxLeft_currentIndexChanged(const QString &arg1)
{
    if(currentSelection < 0) {
        QMessageBox::information(this, "Option not allowed yet", "Please upload images before using this selection");
        ui->primarySubComboBoxLeft->setCurrentText("Primary Substrate");
        return;
    } else {
       selections[currentSelection]->setPrimarySubText(arg1);
       selections[currentSelection]->updateLabelText();
    }
}

mainwindow.h

private:
    Ui::MainWindow *ui;
    MGraphicsScene* leftScene;

    QList<DataRegion*> selections;
    int currentSelection;

我认为它进入了循环两次,但我不确定如何解决这个问题。感谢您的任何建议。

ui->primarySubComboBoxLeft->setCurrentText(...) 更改当前索引,这又会再次触发 currentIndexChanged 信号。您可能希望改为处理 activated 信号 - 它仅在通过用户操作更改选择时触发,而不是在以编程方式更改时触发。