Вопрос
Иногда вам нужно создать очень простое приложение с одним файлом в Qt4.Однако это проблематично, поскольку вы всегда выполняете разделение CPP / H, а затем main() находится в другом файле...
Есть идеи, как сделать это в одном файле?Как можно быстрее и грязнее.
Решение
Это пример, который показывает, как это сделать в одном файле.Просто поместите это в новый каталог, сохраните его как "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"
Два трюка в этой демонстрации:
- Первый - это как вызвать "qmake -project", чтобы автоматически создать файл * .pro с файлами в текущем каталоге.Целевым именем по умолчанию является имя каталога, поэтому выбирайте его с умом.
- Во-вторых, #включить *.moc в CPP-файл, чтобы попросить moc предварительно обработать CPP-файлы для определения QObject.
Другие советы
Если вам нужно создать быстрый прототип, используя 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
Файлы.
Не связан с StackOverflow