Pregunta

A veces es necesario crear un aplicación muy sencilla solo archivo en Qt4. Sin embargo, es problemático, ya que siempre está haciendo la separación CPP / H, y luego el main () se encuentra en otro archivo ...

Alguna idea de cómo hacer esto en un solo archivo? Tan rápido como sucia como sea posible.

¿Fue útil?

Solución

Este es un ejemplo que muestra cómo hacer esto en un solo archivo. Acaba de lanzar esto en un nuevo directorio, guardarlo como "main.cpp" y luego ejecutar qmake -project; qmake; make para compilar.

#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"

Dos trucos en esta demo:

  1. En primer lugar es cómo llamar "qmake -project" para crear un archivo .pro * con los archivos en el directorio actual automágicamente. El nombre de destino por defecto es el nombre del directorio, así que elige sabiamente.
  2. En segundo lugar es # include * .moc en el archivo CPP, para pedir moc para preprocesar los archivos CPP para las definiciones QObject.

Otros consejos

Si usted necesita para construir un prototipo rápida, utilizando Python y PyQt4 es aún más compacta:

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_())

No hay necesidad de llamar qmake o molestarse con archivos .moc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top