天天看點

qt技巧

如何去掉QT窗體中的标題欄

dialog->setWindowFlags(Qt::FramelessWindowHint);///去掉标題欄

QT中QSignalMapper的應用

2012-2-16

QSignalMapper可以看做是信号的翻譯和轉換器,他可以吧無參數的信号翻譯成帶int參數,QString參數,QObject參數或者

QWidget*參數信号。

這裡我們把按鈕信号(無參數)轉換成帶QString參數(按鈕的名稱)的信号,然後依靠QString類型的參數進行

處理操作。

例子中

1.

首先建立一個無參數的連接配接:

connect( button, SIGNAL( clicked() ), signalMapper, SLOT( map() ) );

2.

然後我們進行轉換:

signalMapper->setMapping( button, texts[i] );

這裡把信号轉換為QString參數類型的信号,text[i]的内容就是要要傳遞的參數。

3.

最後我們把信号轉發到最終的處理函數handle(信号槽)

connect( signalMapper, SIGNAL( mapped(const QString &) ), this, SLOT(handle(const QString &)) );

handle的參數就是由QSignalMapper轉換過來的QString類型的參數text[i]的值。

//-------------------------------------------------------------------------------------------------------------------

1.建立執行個體

QSignalMapper* signalMapper = new QSignalMapper(this);

2.連接配接原始信号和map()槽

connect(button, SIGNAL(clicked()), signalMapper, SLOT(map()));

3.給mapped()信号捆綁參數

signalMapper->setMapping(button, texts[i]);

4.連接配接mapped()信号給自定義信号

connect(signalMapper, SIGNAL(mapped(const QString &)),

             this, SIGNAL(clicked(const QString &)));

原理:但原始信号發送者發送信号給map()槽時,map()會自動發送已經通過

setMapping()設定好的信号。此時,再将mapped()信号綁定在自定義的信号上即可

作用:可以使一個無參數的信号,轉換成帶參數的信号。參數類型可以是integer,

string或者其它的參數

//-------------------------------------------------------------------------------------------------------------------

Qt界面中文字型及大小設定

在Qt中經常會涉及到界面字型大小的設定,預設字型一般比較小,特别是在移植到開發闆上進行顯示一般都要放大字型,因為開發闆上液晶顯示螢幕分辨率都是非常的小,跟電腦顯示有很大差别。

    一種整體界面字型設定的方法:

    在main函數中添加程式:

             QFont font  = app .font();

             font.setPointSize(16);

             app.setFont(font);

     在Qt/embedded中顯示中文,可以采用如下運作方式:

               ./wireless  -qws  -font  unifont

     改變Qt中QLineEdit中顯示内容的大小:

        QLineEdit *lineEdit = new QLineEdit();

        lineEdit->setStyleSheet("font-size : 16px");

        也可以在主函數中添加語句:

         qApp->setStyleSheet("QLineEdit { font: 16px; });

 來自:http://www.jslinux.com/main/20081219532034/Page/20119121485019/NewsDetail.asp?NewsId=20122161647374

//--------------------------------------------------------------------------------------------------------

int換string了:

有兩種方法:

1.使用

QString QString::number ( long n, int base = 10 )   [static]

如:

long a = 63;

QString s = QString::number(a, 10);             // s == "63"

QString t = QString::number(a, 16).toUpper();     // t == "3F"

2.使用

long a = 63;

QString s = QString("%1").arg(a);

這個其實網上有很多資料,但是他們并沒有說明白我們怎麼把數組間接的改編成字元串,按照這個方法無論給我什麼資料我都可以以字元串的形式輸出painter->drawtext(橫坐标,縱坐标,字元串變量(如上面的 s,t));