是否可以在不使用Qt Creator程序的情况下使用Qt框架创建用户界面?看起来,在使用这个程序时,一半工作必须由你完成,那么为什么不从它的根本上学习它是如何工作的(就Qt API而言)并且自己实现这些程序呢?使用Qt创建GUI
看来,Qt实现XML文件,并使用创作者程序(即自动包括类成员函数等)为您做了很多繁重的工作。我以前在Java中实现了GUI,并且不必涉足XML。 Java在幕后处理这个问题,还是Qt以不同的方式处理这个问题?
是否可以在不使用Qt Creator程序的情况下使用Qt框架创建用户界面?看起来,在使用这个程序时,一半工作必须由你完成,那么为什么不从它的根本上学习它是如何工作的(就Qt API而言)并且自己实现这些程序呢?使用Qt创建GUI
看来,Qt实现XML文件,并使用创作者程序(即自动包括类成员函数等)为您做了很多繁重的工作。我以前在Java中实现了GUI,并且不必涉足XML。 Java在幕后处理这个问题,还是Qt以不同的方式处理这个问题?
是的,这是可能的。我不会就什么是最好的方式发表任何声明,因为我甚至不知道如何使用Qt Creator。就我个人而言,我只是使用文本编辑器来创建源文件。我已经这样做了十年。我也同意你对API的理解和代码的结构。
Qt不仅仅是创建一个GUI。有一个旧的QtWidgets模块,它与“古典”桌面UI小部件一起工作,并具有C++ API。 XML文件只是描述接口的便捷方式,qmake将从XML生成C++头文件并为您生成大量样板文件。 如果您愿意,您可以通过实例化各种QWidget
子类(QMainWindow
,QLabel
等)并使用它们的API,完全使用C++自行完成所有工作。
(我不够熟悉Java回答问题的那部分。)
不过,我建议你看看Qt Quick的它允许一个更好,更现代的方式处理图形用户界面,并给你更多的自由。 (这也是很多更容易和更快的工作。)
如果您想对其中任何更多的细节,只写评论:)
是的,这里是如何创建一个简单的窗口中的代码和一个按钮。
#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
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
虽然知道你的框架是如何工作是很重要的,无论何时你做任何GUI都比hello世界复杂一点,设计师会为你节省很多麻烦。另外,我不明白“无论如何都必须完成一半”,可能你错过了如何使用某些功能(例如,通过上下文菜单隐藏的基本“去槽”命令)。 –
根本不需要编辑XML文件。你应该使用嵌入到QtCreator中的QtDesigner编辑UI文件。 – RobbieE