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
信号 - 它仅在通过用户操作更改选择时触发,而不是在以编程方式更改时触发。
在用户界面上,可以使用 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
信号 - 它仅在通过用户操作更改选择时触发,而不是在以编程方式更改时触发。