C++ 自定义qdialog的执行

C++ 自定义qdialog的执行,c++,qt,C++,Qt,我在尝试运行此应用程序时出错。。。错误消息是: main.cpp(11):错误:表达式必须具有类类型 int r=dialog.exec();我不知道为什么 我正在使用qmake生成make文件。。。我已经向*.pro文件添加了必要的文件,因为对话框是从QDialog继承的,我应该可以访问函数exec #include <QtGui> #include <QDialog> #include <QtUtil.h> #include <Mathematics

我在尝试运行此应用程序时出错。。。错误消息是:

main.cpp(11):错误:表达式必须具有类类型 int r=dialog.exec();我不知道为什么

我正在使用qmake生成make文件。。。我已经向*.pro文件添加了必要的文件,因为对话框是从QDialog继承的,我应该可以访问函数exec

#include <QtGui>
#include <QDialog>
#include <QtUtil.h>
#include <Mathematics.h>
#include <Pair.h>
#include "View.h"

class QMesseageBox;
class QAction;
class QDialogButtonBox;
class QLabel;
class QLineEdit;
class QPushButton;
class QTextEdit;

class Dialog : public QDialog {
    Q_OBJECT
public:
    Dialog() {
        QHBoxLayout *layout = new QHBoxLayout;
        // prevent left vertical box from growing when main window resized
        layout->addStretch(1);

        QLabel*      lab_Layers = new QLabel(tr("Layers"));
        d_inline   = new QLineEdit;
        d_inline->setText("50");

        scene = new QGraphicsScene(0, 0, 500, 500);
        view  = new View;

        layout->addWidget(view);
        view->setScene(scene);

        QVBoxLayout *mainLayout = new QVBoxLayout;
        mainLayout->addLayout(layout);
        setLayout(mainLayout);
        setWindowTitle(tr("VI Smooth 0.4"));    
    }

private slots:
    // scroll the "after" window when "before" one is scrolled (so they
    // remain in sync)

private:
    QAction* exitAction;
    QtUtil qt;
    QLineEdit*   d_inline;
    QGraphicsScene* scene;
    QGraphicsView*  view;
};
#包括
#包括
#包括
#包括
#包括
#包括“View.h”
qmessagebox类;
类QAction;
QDialogButtonBox类;
类QLabel;
类QLineEdit;
类按钮;
类QTextEdit;
类对话框:公共QDialog{
Q_对象
公众:
对话(){
QHBoxLayout*布局=新的QHBoxLayout;
//调整主窗口大小时防止左垂直框增长
布局->添加拉伸(1);
QLabel*lab_Layers=新的QLabel(tr(“Layers”);
d_inline=新的QLineEdit;
d_inline->setText(“50”);
场景=新的Qgraphicscene(0,0,500,500);
视图=新视图;
布局->添加小部件(视图);
查看->设置场景(场景);
QVBoxLayout*mainLayout=新的QVBoxLayout;
主布局->添加布局(布局);
设置布局(主布局);
setWindowTitle(tr(“VI平滑0.4”);
}
专用插槽:
//当滚动“before”窗口时,滚动“after”窗口(因此
//保持同步)
私人:
行动*退出;
QtUtil-qt;
QLineEdit*d_内联;
qgraphicscene*场景;
QGraphicsView*视图;
};
主类

#include <QApplication>
#include <QMessageBox>
#include "Dialog.h"

int 
main(int argc, char **argv) {
    QApplication app(argc, argv);
      argv++;
    Dialog dialog();
//  dialog.showMaximized();
    int r = dialog.exec();
    return 0;
}
#包括
#包括
#包括“Dialog.h”
int
主(内部argc,字符**argv){
QApplication应用程序(argc、argv);
argv++;
对话框();
//dialog.showMaximized();
int r=dialog.exec();
返回0;
}

它应该是这样的。如果创建
对话框
对象,则需要调用
show()
。您还需要在
main()
中返回
app.exec()

#包括
#包括
#包括“Dialog.h”
int
主(内部argc,字符**argv){
QApplication应用程序(argc、argv);
argv++;
对话;
dialog.show()
返回app.exec(argc,argv);
}

您的
对话框()是错误的。用我现有的替换它。非常感谢现在它正在工作。。。但是为什么我不能调用dialog()@TurBooRD因为C++是一个混乱,LOL。当你做一些事情,比如“代码>对话MydiAudio())/Cuffe >时,你实际上正在创建一个函数原型,它表示“我有一个返回对话框并且不带参数的函数”,而且,当你做“代码>对话对话框< /C>”时,你正在栈上创建那个对象。这工作在这里,但是对于更大的项目,您可能需要考虑动态分配,即,代码>对话框*对话框=新建对话框()。代码>
#include <QApplication>
#include <QMessageBox>
#include "Dialog.h"

int 
main(int argc, char **argv) {
    QApplication app(argc, argv);
      argv++;
    Dialog dialog;
    dialog.show()
    return app.exec(argc, argv);
}