A. qt編程問題
1、關聯Qt庫。如果是分別安裝的Qt Creator和Qt庫,而不是安裝集成Qt Creator和Qt庫的SDK,則需要手動關聯Qt庫。打開工具→選項菜單,然後選擇「構建和運行」一項,再進入Qt版本選項卡。點擊右上角的「添加」按鈕,然後會讓選擇qmake.exe文件,我們在Qt(不是Qt Creator)安裝目錄的bin目錄中找到該文件並打開。現在已經默認生成了版本信息,我們點擊確定按鈕即可。
2、關聯MinGW。在安裝Qt 4.8.6及以後的Qt 4版本時,應該按照安裝時的提示來下載相應版本的MinGW,不然編譯程序無法運行。如果是Qt4版本,需要使用GCC 4.4,也就是MinGW需要是4.4版本的,其他新的版本均不可用。在Qt 4.8版本,需要下載並指定GDB才能正常調試。下載完MinGW和GDB以後,將其解壓到Qt的安裝目錄中,比如這里都解壓到了C:Qt目錄中。打開工具→選項菜單,然後選擇「構建和運行」一項,再進入工具鏈選項卡。點擊右上角的「添加」按鈕,然後會讓選擇mingw32-g++.exe文件,我們在MinGW安裝目錄的bin目錄中找到該文件並打開。關聯GDB則進入調試器選項卡添加GDB相關exe文件。
如果安裝的是集成開發包QtSDK,則不需要手動關聯Qt庫、MinGW和GDB,由Qt自動關聯。
注意:Qt5以後版本默認也包含了所有需要的工具,不存在這里的情況,直接下載安裝即可使用!
3、在創建桌面版項目時,最好選中「使用影子構建」,這樣編譯生成的文件會和源碼分別存放,如下圖所示。編譯完成後會發現多了一個helloworld-build-desktop-Qt_4_8_1__4_8_1____目錄,裡面存放的就是編譯生成的文件。這就是前面創建項目講到的 「使用影子構建」 ,如果沒有選中這個,那麼生成的文件就會和源碼在同一個目錄里。
13、狀態信息可以被分為三類:臨時信息,如一般的statusTip提示信息,上面講到的動作提示就是臨時信息;正常信息,如顯示頁數和行號;永久信息,如顯示版本號或者日期。可以使用showMessage()函數來顯示一個臨時消息,它會出現在狀態欄的最左邊。一般用statusBar->addWidget()函數添加一個QLabel到狀態欄上用於顯示正常信息,它會生成到狀態欄的最左邊,可能會被臨時消息所掩蓋。如果要顯示永久信息,要使用statusBar->addPermanentWidget()函數來添加一個如QLabel一樣的可以顯示信息的部件,它會生成在狀態欄的最右端,不會被臨時消息所掩蓋。
14、關於隨機數,在Qt中是使用qrand()和qsrand()兩個函數實現的。在使用qrand()函數產生隨機數之前,一般要使用qsrand()函數為其設置初值,如果不設置初值,那麼每次運行程序,qrand()都會產生相同的一組隨機數。為了每次運行程序時,都可以產生不同的隨機數,我們要使用qsrand()設置一個不同的初值。
B. 關於Qt界面的設計(界面銜接)一般做法
給你方向不具體告訴你,給分不?不知道了,好吧,還是稍微介紹一點,然後大膽鼓勵你自己領悟!
解救方法是這個類:QSingalMapper,看名字能想到什麼?沒錯,這個類將同一個信號封裝後,改造成不同的信號,然後再發射。
asssiant裡面有個例子:
ButtonWidget::ButtonWidget(QStringList texts, QWidget *parent)
: QWidget(parent)
{
signalMapper = new QSignalMapper(this);
QGridLayout *gridLayout = new QGridLayout;
for (int i = 0; i < texts.size(); ++i) {
QPushButton *button = new QPushButton(texts[i]);
connect(button, SIGNAL(clicked()), signalMapper, SLOT(map()));
signalMapper->setMapping(button, texts[i]);
gridLayout->addWidget(button, i / 3, i % 3);
}
connect(signalMapper, SIGNAL(mapped(const QString &)),
this, SIGNAL(clicked(const QString &)));
setLayout(gridLayout);
}
看見這個函數了么?每個button都發送clicked信號,但是使用這個類以後就把相同的信號給封裝成不同信號發射了。注意那個connect函數裡面的mapped信號的QString參數,不同的button的clicked信號是相同的,但是text是不同的,這樣相同的信號就能區分出不同的需求了。
畫龍點睛到此,不必細細去說,相信你該知道怎麼辦了。不知道還可以問我。
C. ubuntu怎麼安裝qtsvg
下面就是需要作的幾個步驟
1)sudo apt-get install libqt4-dev
安裝完這個包後,你就可以寫Qt程序了。libqt4-dev會自動把下面相關的一些qt4包安裝上,例如:
libqt4-assistant
libqt4-dbus libqt4-designer libqt4-help libqt4-network libqt4-opengl
libqt4-opengl-dev libqt4-qt3support libqt4-script libqt4-scripttools
libqt4-sql libqt4-sql-mysql libqt4-svg libqt4-test libqt4-webkit
libqt4-xml libqt4-xmlpatterns libqtcore4 libqtgui4
sudo apt-get install g++ automake
這倆個包並不屬於qt包,但是編譯Qt的c++編譯器需要安裝,在 g++包里。Qt有自己的編譯系統,automake並不是必須的,但有時候需要編譯一些第三方的庫,所以一般推薦安裝上。
3) sudo apt-get install qt4-dev-tools qt4-designer qt4-doc
qt4- dev-tools包含了一些開發用到輔助工具,如幫助系統工具assitant,翻譯輔助工具linguist,d-bus查看器,Pixel Tool等。
qt4-designer則會安裝GUI設計工具designer
qt4-doc qt4的幫助文件
~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.
下面是一些選裝的安裝包
4) sudo apt-get install libqt4-opengl-dev
Qt4 OpenGL 相關的開發庫文件
5) sudo apt-get install libqt4-sql-mysql libqt4-sql-odbc libqt4-sql-psql libqt4-sql-sqlite libqt4-sql-sqlite2
開發資料庫所要的一些插件驅動,可選取自己需要的包安裝
5.1) sudo install libiodbc2-dev libmysqlclient15-dev libsqlite3-dev
對應步驟5)中的資料庫所需的開發庫文件
你可能還需要的內容 appendix
a1) sudo aptitude search qt4
這個命令會讓你查到和qt4相關的其它內容,比如調試用的符號表文件,pyqt,perlqt等
D. qt 使用svg
QT有個庫支持SVG啊,搞清楚那些類之間的關系,就可以了。
SVG開發環境,你是用的什麼,你用SVG來做什麼的呢?
E. qtsvgitem設置大小
給界面或者按鈕上顯示一個圖標或背景圖片,日常使用.png格式的文件完全夠用,但是有些使用場景需要把圖片放大顯示時,使用.png文件就會開始模糊,這時需要載入.SVG文件,即使放大也很清晰。在界面添加一個QLabel控制項,最終是要把.Svg圖片顯示到QLabel中的。
(1)使用QSvgRenderer載入矢量圖片.
(2)提供繪制設備,QPixmap對象;
(3)提供畫家,QPainter對象;並與繪制設備建立聯系;
(4)調用QSvgRenderer的render(painter)函數,讓畫家執行渲染操作!
(5)最後將繪制設備放到QLabel中。在界面添加一個QLabel控制項,最終是要把.Svg圖片顯示到QLabel中的。
(1)使用QSvgRenderer載入矢量圖片.
(2)提供繪制設備,QPixmap對象;
(3)提供畫家,QPainter對象;並與繪制設備建立聯系;
(4)調用QSvgRenderer的render(painter)函數,讓畫家執行渲染操作!
(5)最後將繪制設備放到QLabel中。
F. QT 的SVG怎麼用,有相關教程嗎
建議看看Qt所附帶的Demo程序,那裡有一個SVG的演示。關注一下類QSvgRenderer
那個演示在..\examples\opengl\framebufferobject,要用QSvgWidget。去下面的地址有QT中SVG文件的繪制和生成程序,你可以看看: http://download.csdn.net/source/1117920