我的QSpinBox中有QWidget,仅当QLabel获得QImage时才要设置。是否有任何功能或工具可以在任何条件下设置QSpinBox

在这里,我的工作方式如下

首先,我声明一个QSpinBox对象并设置它的最大值

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

通过按下它,我可以得到一个QPushButton,用户可以加载图像,该图像将显示在QLabel中。
void MainWindow::on_Browse_clicked()
{
    QFileDialog dialog(this);
    dialog.setNameFilter(tr("Images (*.png *.xpm *.jpg)"));
    dialog.setViewMode(QFileDialog::Detail);
    QString imagefileName = QFileDialog::getOpenFileName(this, tr("Open File"), "Given_Path", tr("Images (*.png *.xpm *.jpg)"));

    if(!imagefileName.isEmpty())
    {
        image= QImage(imagefileName);
        ui->label->setPixmap(QPixmap::fromImage(image));

        spinbox= new QSpinBox(this);
        QPoint p(100,300);
        spinbox->move(p);
    }
}

但是它没有显示我尝试获取的任何QSpinBox

多谢您的协助。

最佳答案

您可以尝试QSpinBox::setEnabled(bool)函数,其中QSpinBox::setEnabled(true)将启用您的SpinBox,类似地QSpinBox::setEnabled(false)将禁用此功能。

我认为您可以在QSpinBox函数中更好地声明MainWindow并将其禁用。因此,您可以尝试一下。

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    spinbox= new QSpinBox(this);
    QPoint p(100,300);
    spinbox->move(p);

    spinbox->setEnabled(false);    //here disabled QSpinBox
}

在浏览点击功能内,您可以启用它。
void MainWindow::on_Browse_clicked()
{
    QFileDialog dialog(this);
    dialog.setNameFilter(tr("Images (*.png *.xpm *.jpg)"));
    dialog.setViewMode(QFileDialog::Detail);
    QString imagefileName = QFileDialog::getOpenFileName(this, tr("Open File"), "Given_Path", tr("Images (*.png *.xpm *.jpg)"));

    if(!imagefileName.isEmpty())
    {
        image= QImage(imagefileName);
        ui->label->setPixmap(QPixmap::fromImage(image));

        spinbox->setEnabled(true);  // Here enabled QSpinBox
    }
}

希望对您有帮助。

09-08 05:46