2009-09-01 2 views
2

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

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

+0

Мне нравится идея, но не то, как вы это сделали :) Вы должны отправить реальный вопрос, а затем отправить код выше в качестве ответа на свой вопрос. У вас тоже будет значок :) –

+0

Сделано, спасибо за идею. – elcuco

ответ

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 -проект», чтобы создать * .pro файл с файлами в текущем каталоге автомагически. Имя цели по умолчанию - это имя каталога, поэтому выберите его с умом.
  2. Вторым является #include * .moc в файле CPP, чтобы запросить moc для предварительной обработки файлов CPP для определения QObject.
1

Если вам нужно построить быстрый прототип, с помощью 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 файлов.

+0

Я использую его много раз, чтобы отправлять ошибки в Trolltech/QtSoftware/Nokia. Я не уверен, что PyQt4 - лучший способ сделать это. – elcuco

+0

Как я уже сказал: «Если вам нужно построить быстрый прототип». Имейте в виду, что у других людей могут быть несколько разные потребности. –

Смежные вопросы