我怎么能把这个qt程序到一个源代码文件



我想在一个文件中有这个代码,但不能弄清楚如何。我知道这样做可能不是很好的实践,但我正在努力学习qt,并且会发现如果它在一个文件中更容易理解信息。

#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MainWindow mainWindow;
    mainWindow.showMaximized();
    return app.exec();
}

这是主窗口。

#include "mainwindow.h"
#include <QCoreApplication>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    // Create the button, make "this" the parent
    m_button = new QPushButton("My Button", this);
    // set size and location of the button
    m_button->setGeometry(QRect(QPoint(100, 100),
                             QSize(200, 50)));
    // Connect button signal to appropriate slot
    connect(m_button, SIGNAL(released()), this, SLOT(handleButton()));
}
void MainWindow::handleButton()
{
    // change the text
    m_button->setText("Example");
    // resize button
    m_button->resize(100,100);
}

这是主窗口。h

#define MAINWINDOW_H
#include <QMainWindow>
#include <QPushButton>
namespace Ui {
    class MainWindow;
}
class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
private slots:
    void handleButton();
private:
    QPushButton *m_button;
};

只需将所有内容复制到一个文件中。

#include <QApplication>
#include <QMainWindow>
#include <QPushButton>
namespace Ui {
    class MainWindow;
}
class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
private slots:
    void handleButton();
private:
    QPushButton *m_button;
};
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    // Create the button, make "this" the parent
    m_button = new QPushButton("My Button", this);
    // set size and location of the button
    m_button->setGeometry(QRect(QPoint(100, 100),
                             QSize(200, 50)));
    // Connect button signal to appropriate slot
    connect(m_button, SIGNAL(released()), this, SLOT(handleButton()));
}
void MainWindow::handleButton()
{
    // change the text
    m_button->setText("Example");
    // resize button
    m_button->resize(100,100);
}
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MainWindow mainWindow;
    mainWindow.showMaximized();
    return app.exec();
}

在main文件中定义新类通常不是一个好主意。通常,您希望每个新类都在它们自己的文件中,或者您希望将几个相关的类放在一个单独的文件中。有大量的资源,你可以谷歌相关的最佳实践。我建议你花点时间阅读。

既然你问了…下面是您将如何为您的示例执行此操作。如果你没有在main上面定义你的类,编译器会报错,因为它不知道"MainWindow"是什么。

#include <QApplication>
#include <QMainWindow>
#include <QPushButton>

class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
private slots:
    void handleButton();
private:
    QPushButton *m_button;
};
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MainWindow mainWindow;
    mainWindow.showMaximized();
    return app.exec();
}

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    // Create the button, make "this" the parent
    m_button = new QPushButton("My Button", this);
    // set size and location of the button
    m_button->setGeometry(QRect(QPoint(100, 100),
                             QSize(200, 50)));
    // Connect button signal to appropriate slot
    connect(m_button, SIGNAL(released()), this, SLOT(handleButton()));
}
void MainWindow::handleButton()
{
    // change the text
    m_button->setText("Example");
    // resize button
    m_button->resize(100,100);
}

#include本质上是获取您选择的任何文件的内容,并将其复制/粘贴到该位置。然后编译器从文件的顶部开始,一直到文件的底部。

知道了这些,您应该能够按照文件包含的顺序复制粘贴文件的内容。

mainwindow.h

mainwindow.cpp

main.cpp

简短的回答是不要这样做,你应该在它自己的头文件中定义一个类,当你想在main中运行它时#include它到main中。这允许你在整个程序中重用你认为合适的类,这是面向对象编程的原则之一,可重用代码。例如

class A
{
public:
    A();
    ~A();
    void somePublicMethod();
private:
    void somePrivateMethod();
};

如果你在main中包含那个类,当你将这个类编译为目标代码(假设你知道如何在。cpp文件中实现这个类),那么当所有的目标文件被链接到创建程序时,链接器基本上会将文件中包含的所有目标代码制作成一个大文件,以便完全编译。我建议你多读一些关于编译和链接的内容,基本上可以归结为三个阶段,预处理、编译和链接。学习更多关于面向对象编程的知识,并阅读为什么把它们都塞进一个文件是一个坏主意。每个类都应该包含在它自己的。h文件中(除非它是一个紧密耦合的类),这样你就可以在你认为合适的时候包含它们。希望这对你有帮助,祝你Qt玩得开心:)

相关内容

  • 没有找到相关文章

最新更新