Однофайловая демонстрация Qt4

Иногда вам нужно создать очень простое однофайловое приложение в Qt4. Однако это проблематично, поскольку вы всегда выполняете разделение CPP/H, а затем main() находится в другом файле...

Любые идеи, как это сделать в одном файле? Как можно быстрее, как можно грязнее.


person elcuco    schedule 01.09.2009    source источник
comment
Мне нравится идея, но не то, как вы это сделали :) Вы должны опубликовать настоящий вопрос, а затем отправить приведенный выше код в качестве ответа на свой собственный вопрос. Вам тоже дадут значок :)   -  person Aaron Digulla    schedule 01.09.2009


Ответы (2)


Это пример, который показывает, как это сделать в одном файле. Просто добавьте это в новый каталог, сохраните его как «main.cpp», а затем запустите qmake -project; qmake; make для компиляции.

#include <QtGui/QApplication>
#include <QtGui/QMainWindow>
#include <QtGui/QPushButton>

class MainWindow : public QMainWindow {
    Q_OBJECT
public:
    MainWindow(QWidget *parent = 0){
        button = new QPushButton("Hello, world!", this);
    }
private:
    QPushButton *button;
};

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

#include "main.moc"

Два трюка в этой демонстрации:

  1. Во-первых, как вызвать "qmake -project" для автоматического создания файла *.pro с файлами в текущем каталоге. Целевое имя по умолчанию — это имя каталога, поэтому выбирайте его с умом.
  2. Во-вторых, #include *.moc в файл CPP, чтобы попросить moc предварительно обработать файлы CPP для определений QObject.
person elcuco    schedule 01.09.2009

Если вам нужно быстро создать прототип, используйте Python и PyQt4. компактный:

import sys
from PyQt4.QtGui import *

class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)

        self.button = QPushButton("Hello, world!", self)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

Не нужно вызывать qmake или возиться с .moc файлами.

person Aaron Digulla    schedule 01.09.2009
comment
Я использую его много раз, чтобы отправлять сообщения об ошибках в Trolltech/QtSoftware/Nokia. Я не уверен, что PyQt4 - лучший способ сделать это. - person elcuco; 01.09.2009
comment
Как я уже сказал: если вам нужно быстро создать прототип. Имейте в виду, что у других людей могут быть немного другие потребности. - person Aaron Digulla; 01.09.2009