2014-05-12 151 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