2014-05-12 153 views
1

是否可以在不使用Qt Creator程序的情况下使用Qt框架创建用户界面?看起来,在使用这个程序时,一半工作必须由你完成,那么为什么不从它的根本上学习它是如何工作的(就Qt API而言)并且自己实现这些程序呢?使用Qt创建GUI

看来,Qt实现XML文件,并使用创作者程序(即自动包括类成员函数等)为您做了很多繁重的工作。我以前在Java中实现了GUI,并且不必涉足XML。 Java在幕后处理这个问题,还是Qt以不同的方式处理这个问题?

+3

虽然知道你的框架是如何工作是很重要的,无论何时你做任何GUI都比hello世界复杂一点,设计师会为你节省很多麻烦。另外,我不明白“无论如何都必须完成一半”,可能你错过了如何使用某些功能(例如,通过上下文菜单隐藏的基本“去槽”命令)。 –

+0

根本不需要编辑XML文件。你应该使用嵌入到QtCreator中的QtDesigner编辑UI文件。 – RobbieE

回答

1

是的,这是可能的。我不会就什么是最好的方式发表任何声明,因为我甚至不知道如何使用Qt Creator。就我个人而言,我只是使用文本编辑器来创建源文件。我已经这样做了十年。我也同意你对API的理解和代码的结构。

4

Qt不仅仅是创建一个GUI。有一个旧的QtWidgets模块,它与“古典”桌面UI小部件一起工作,并具有C++ API。 XML文件只是描述接口的便捷方式,qmake将从XML生成C++头文件并为您生成大量样板文件。 如果您愿意,您可以通过实例化各种QWidget子类(QMainWindow,QLabel等)并使用它们的API,完全使用C++自行完成所有工作。

(我不够熟悉Java回答问题的那部分。)

不过,我建议你看看Qt Quick的它允许一个更好,更现代的方式处理图形用户界面,并给你更多的自由。 (这也是很多更容易和更快的工作。)

如果您想对其中任何更多的细节,只写评论:)

+1

要添加到Venemo的答案,这里是一个老官方教程,向您展示如何使用纯C++编写基于窗口小部件的GUI:http://doc.qt.digia.com/4.3/tutorial.html ...这里有一个新的官方教程,向您展示如何在纯QML中编写Qt Quick GUI:http://qt-project.org/doc/qt-5/qml-tutorial.html – JKSH

+0

@JKSH感谢您的链接! :) – Venemo

0

是的,这里是如何创建一个简单的窗口中的代码和一个按钮。

#include <QApplication> 
#include <QPushButton> 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 
    QPushButton *quitButton = new QPushButton("Quit", 0); 

    connect(quitButton, SIGNAL(clicked()), &app, SLOT(quit())); 

    return 0; 
}   

良好的Qt教程:

http://meetingcpp.com/index.php/br/items/an-introduction-into-qt-part-ii.html

0

QtCreator,如果用G ++编译器: 当有代码中的错误,允许在错误列表中右键单击,然后显示输出(O快捷键)...你可以看到所有选项的g ++命令:

g++ -c -pipe -g -std=gnu++0x -Wall -W -D_REENTRANT -fPIC -D_GLIBCXX_USE_CXX11_ABI=0 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../my-project -I. -I../../../anaconda3/include/qt -I../../../anaconda3/include/qt/QtWidgets -I../../../anaconda3/include/qt/QtGui -I../../../anaconda3/include/qt/QtCore -I. -I. -I../../../anaconda3/mkspecs/linux-g++ -o mainwindow.o ../my-project/mainwindow.cpp 

因此它只生成MakeFile in build-your-project-title-Debug(或Release)。如果要修改它,你把所有的信息:

MAKEFILE  = Makefile 

####### Compiler, tools and options 

CC   = gcc 
CXX   = g++ 
DEFINES  = -D_GLIBCXX_USE_CXX11_ABI=0 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB 
CFLAGS  = -pipe -g -Wall -W -D_REENTRANT -fPIC $(DEFINES) 
CXXFLAGS  = -pipe -g -std=gnu++0x -Wall -W -D_REENTRANT -fPIC $(DEFINES) 
INCPATH  = -I../sans_titre -I. -I../../../anaconda3/include/qt -I../../../anaconda3/include/qt/QtWidgets -I../../../anaconda3/include/qt/QtGui -I../../../anaconda3/include/qt/QtCore -I. -I. -I../../../anaconda3/mkspecs/linux-g++ 
… 

您可以复制它,还是用QtCreator先定义这个Makefile然后CLI下奔跑着:

make