是否可以在不使用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