1

我正在关注 QtSDK 中列出的 Qt 示例,标题为:“Qt 入门编程”。我的问题是程序不显示任何对象。

我的 main.cpp 看起来像这样:

#include <QtGui>

#include <notepad.h>

int main(int argv, char **args)  {
    QApplication app(argv, args);

    QVBoxLayout layout;

    Notepad notepad();

    QWidget window;
    window.setLayout(&layout);

    window.show();

    return app.exec();
}

'notepad.h' 文件:

#ifndef NOTEPAD_H
#define NOTEPAD_H

#include <QtGui>

class Notepad : public QMainWindow  {
    Q_OBJECT

    public:
        Notepad();

    private slots:
        void open();
        void save();
        void quit();

    private:
        QTextEdit *text_edit;

        QAction *open_action;
        QAction *save_action;
        QAction *exit_action;

        QMenu *file_menu;
};

#endif // NOTEPAD_H

“notepad.cpp”文件:

#include "notepad.h"

Notepad::Notepad()  {
    open_action = new QAction(tr("&Open"), this);
    save_action = new QAction(tr("&Save"), this);
    exit_action = new QAction(tr("&Exit"), this);

    connect(open_action, SIGNAL(triggered()), this, SLOT(open()));
    connect(save_action, SIGNAL(triggered()), this, SLOT(save()));
    connect(exit_action, SIGNAL(triggered()), qApp, SLOT(quit()));

    file_menu = menuBar()->addMenu(tr("&File"));
    file_menu->addAction(open_action);
    file_menu->addAction(save_action);
    file_menu->addSeparator();
    file_menu->addAction(exit_action);

    text_edit = new QTextEdit;
    setCentralWidget(text_edit);

    setWindowTitle(tr("Notepad"));
}

void Notepad::open()  {
    ...
}

void Notepad::save()  {
    ...
}

void Notepad::quit()  {
}

任何解决此事的帮助将不胜感激。

编辑

我最初的问题问为什么我因为没有实现“退出”功能而出现编译时错误,以防你想知道:)。

4

1 回答 1

2

您必须实现在 notepad.h 中定义为私有插槽的 quit() 方法。未解决的错误是链接错误,它告诉您链接器没有找到函数声明的任何实现。将此添加到 notepad.cpp :

void Notepad::quit()  {
    ...
}

对于新问题:

试试记事​​本.show()。您的 MainWindow 可以是记事本对象,因为它是 QMainWindow。

int main(int argv, char **args)  {
    QApplication app(argv, args);

    Notepad notepad();
    notepad.show();

    return app.exec();
}
于 2012-09-16T06:50:47.080 回答