顯示具有 QT 相關 標籤的文章。 顯示所有文章
顯示具有 QT 相關 標籤的文章。 顯示所有文章

2014年9月23日 星期二

[QT] 使用designer搭配stylesheet (CSS) 美化介面


QT的stylesheet用法可參考官網,大致和CSS同
http://qt-project.org/doc/qt-4.8/stylesheet-examples.html#customizing-a-qpushbutton-using-the-box-model

[1] 在designer中點選元件的stylesheet來作編輯

[2]  打開編輯樣式表,可使用上方的選項來快速產生代碼

[3] 再來介紹如何加入圖片
     1.新增資源找地方存檔(.qrc)
     2.新增前置字串,打上斜線(/),用來找.qrc檔的相對路徑,有資料夾就再加資料夾名
     3.接著就可以新增圖片檔到qrc裡囉
     4.加好之後,就可以從建好的資源檔中選取圖片產生代碼了


[4] 產生好的qrc檔須經過編譯成cpp檔並加入專案才能在畫面上看到,否則介面的.h檔內的stylesheet無法找到,一樣使用QT BIN資料夾下rcc.exe
    執行rcc image.qrc -o image.cpp

[QT] 使用QT5.2.0 designer 產生UI給C++使用

此方式使用designer 建立介面,當然QT creator也是可以
但因VS介面較熟悉所以只用designer 建立介面,不使用QT creator建專案,覺得彈性也比較大

[1] 開啟designer建立widget



[2] 拉好所需的介面,存成.ui檔
[3] 使用QT bin資料夾下的uic.exe 將ui檔編譯為h檔
      uic.exe ClientUI.ui -o ClientUI.h
[4]  將h檔拉進專案,需要注意的是,為方便之後可以繼續以designer修改介面,最好避免手動去修改h檔,uic.exe重編會覆蓋掉你修改過的,所以須小心,那怎麼比較好呢,個人是建立子類別來繼承此UI類別,把要另外加的layout/元件和signal/slot和需要的UI加在這裡,(應該也可以直接從new出來的父類別改)
[5] 在main裡new出介面

QWidget widget;       // widget  
ClientUI_Imp ui;      // .ui產生的類別

ui.setupUi(&widget);  // 設定介面
ui.initCustomGui();   // 另外自定的介面
ui.initconn();        // 另外自定的signal/slot

widget.show();        // 顯示介面

2013年10月31日 星期四

QT installEventFilter 中文編碼


//============= 事件處理&中文編碼 =============//
setPaletteBackgroundColor( QColor( 200, 200, 200) );
m_gui_Test->getComboBox()->installEventFilter(this); //元件事件處理
QTextCodec::setCodecForTr(QTextCodec::codecForName("BIG5")); //中文編碼處理
QTextCodec::setCodecForLocale(QTextCodec::codecForName("BIG5")); //中文編碼處理
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("BIG5")); //中文編碼處理
//若加上中文編碼影響到其他存取檔狀況
//可改成QString::fromLocal8Bit("中文");方式 對特定字串轉換

////////////加上處理函式
bool Test_Page00::eventFilter(QObject*object,QEvent *event)
{
QString qs_cb_tip;
if(object == m_gui_Test->getComboBox())
{
switch (m_gui_Test->currentItem_ByCB())
{
case test:
break;
default:
break;
}
QToolTip::add(m_gui_Test->getComboBox(),qs_cb_tip);              //tooltip提示
}
return 0;
}


//============= QT 常用函式 =============//
1. Q_CHECK_PTR(p) :檢查p指針為空,印出警告:"In file file.cpp, line 234: Out of memory"
2. Q_ASSERT(b) : 當b為否時,印出警告:"ASSERT:‘b’ in file file.cpp