为什么QDialog在被调用时不显示?

时间:2016-02-25 10:12:27

标签: qdialog

我对整个QT事物都不熟悉,所以请耐心等待: - )

我正在开发一个带有QMainWindow和两个菜单选项的程序。然后,我使用QActions调用函数来执行菜单选项。

我已经整理了一个QDialog,它在直接调用时显示,但在通过QAction对话框调用时则不显示。

代码:

构造函数代码

View::View(QWidget *parent):QMainWindow(parent)
{
    QWidget *topFiller = new QWidget;
    topFiller->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

    QVBoxLayout *layout = new QVBoxLayout;
    layout->setMargin(5);
    layout->addWidget(topFiller);
    setLayout(layout);

    createActions();
    createMenus();
    change();  //Works but displayed as a separate window

    QWidget::setWindowTitle( "Stock Editor");
    setMinimumSize(300, 300);
    resize(680, 520);

}

QAction Snippet

changeact = new QAction(tr("&Change"), this);
    connect(saveact, SIGNAL(triggered()), this, SLOT(change()));

更改()函数

void View::change()
{
    QDialog *dialogWin = new QDialog(this);
    dialogWin->setWindowTitle("Add Item");

    QFormLayout *formLayout = new QFormLayout();

    QLineEdit *barcodeLineEdit = new QLineEdit;
    QLabel *barcodeLabel = new QLabel("Barcode");
    QLineEdit *descLineEdit = new QLineEdit;
    QLabel *descLabel = new QLabel("Description");
    QSpinBox *stockSpinBox = new QSpinBox;
    QLabel *stockLabel = new QLabel("Stock");
    QSpinBox *priceSpinBox = new QSpinBox;
    QLabel *priceLabel = new QLabel("Price");

    QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok
                                         | QDialogButtonBox::Cancel);

   // connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
   // connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));

    formLayout->addRow(barcodeLabel, barcodeLineEdit);
    formLayout->addRow(descLabel, descLineEdit);
    formLayout->addRow(stockLabel, stockSpinBox);
    formLayout->addRow(priceLabel, priceSpinBox);

    QVBoxLayout *mainLayout = new QVBoxLayout(dialogWin);
    mainLayout->addLayout(formLayout);
    mainLayout->addWidget(buttonBox);

    dialogWin->setLayout(mainLayout);
    dialogWin->activateWindow();
    dialogWin->show();

}

如何在调用时让框出现在主窗口的顶部?

感谢您的帮助

0 个答案:

没有答案