QLabel字體設置
1、我主要是使用QLabel和QMovie繪製png、jpeg和gif的動畫,其他的格式沒有試驗,不過,根據經驗如果有相應的插件支持,應該也是可以的,至於,什麼是QT的插件就不在這裏描述了。我之所以使用QMovie而不是用QPixmap(其實也是可以的)主要是我想把繪製靜態圖片和動畫都封裝在統一的一個接口中,而用QPixmap繪製的動畫是不動的。
2、繪圖的過程:
繪圖的過程是非常簡單的,首先,新建QLabel和QMovie的對象,這裏,既可以在新建QMovie的時候就用圖片初始化其對象,也可以通過load的方法加載圖片到QMovie ,然後把調用QLabel的setmovie方法在QLabel上顯示圖片,最後調用QLabel的show方法把圖片顯示出來即可。具體的方法:
QLabel label;
QMovie* movie = new QMovie("new.png"); //繪製jpeg的圖片也是可以的
//QMovie* movie = new QMovie("new.jif"); //繪製動畫也是可以的
movie->start();
label.setMovie(movie);
label.show();
這樣編譯、運行就能在qvfb中看到圖片了。
3、過程中需要設置的一些Qlabel和QMovie的屬性
label->setWindowFlags(Qt::FramelessWindowHint); //設置不顯示任務欄
//設置QLabel背景透明
QPalette pal;
pal.setColor(QPalette::Background, QColor(0x00, 0xff, 0x00, 0x00));
label->setPalette(pal);
//設置QLabel顯示位置
label->setGeometry(x,y,w,h );
//設置QLabel顏色
pal.setColor(QPalette::WindowText, Qt::red);
label->setPalette(pal);
4、在QT界面中顯示文字(未實現中文)
其實,QLabel本來就可以直接顯示文字,下面的代碼主要顯示一些文字顯示的設置,不多說,直接看代碼吧,比較直觀
//設置字體大小
QFont ft;
ft.setPointSize(fontsize);
label->setFont(ft);
//設置背景透明
QPalette pal ;
pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00));
label->setPalette(pal);
//設置字居中顯示 label->setAlignment(Qt::AlignCenter);
Qt::AlignLeft0x0001Aligns with the left edge.Qt::AlignRight0x0002Aligns with the right edge.Qt::AlignHCenter0x0004Centers horizontally in the available space.Qt::AlignJustify0x0008Justifies the text in the available space.
//設置顯示的位置
label->setGeometry(pos.x, pos.y, pos.w, pos.h );
//放到QLabel上顯示
label->setText(str);
label->show();
當然,顯示圖片、動畫和文字還有別的方法,上面是我主要用到的方法,其他的方法以後遇到我再更新吧
5、說說QT4繪圖中的多線程機制
QT4只能在主線程中繪圖,這一點我走了一些彎路。當然QT4也是支持多線程的,其他非主線程中主要完成一些非繪圖的操作,當需要繪圖的時候應該通知主線程,然主線程繪圖,這個通知過程就1+1醫學論文網自然想到信號和槽的機制。要使用信號和槽,在定義類的時候必須包含: Q_OBJECT 宏
具體的實現是在非主線程中發送一個信號,注意信號函數只需要聲明不需要實現。信號函數可以帶參數,但是不能使用指針;信號函數發送的參數在槽函數端會按照相同的順序收到。比如,我們在一個類中聲明瞭一個信號函數sendmeg(int x,int y),然後在某個地方使用emit sendmeg(10,20),與之關聯的槽函數爲domap(int x,int y),那麼在槽函數執行時x=10,y=20。
2、繪圖的過程:
繪圖的過程是非常簡單的,首先,新建QLabel和QMovie的對象,這裏,既可以在新建QMovie的時候就用圖片初始化其對象,也可以通過load的方法加載圖片到QMovie ,然後把調用QLabel的setmovie方法在QLabel上顯示圖片,最後調用QLabel的show方法把圖片顯示出來即可。具體的方法:
QLabel label;
QMovie* movie = new QMovie("new.png"); //繪製jpeg的圖片也是可以的
//QMovie* movie = new QMovie("new.jif"); //繪製動畫也是可以的
movie->start();
label.setMovie(movie);
label.show();
這樣編譯、運行就能在qvfb中看到圖片了。
3、過程中需要設置的一些Qlabel和QMovie的屬性
label->setWindowFlags(Qt::FramelessWindowHint); //設置不顯示任務欄
//設置QLabel背景透明
QPalette pal;
pal.setColor(QPalette::Background, QColor(0x00, 0xff, 0x00, 0x00));
label->setPalette(pal);
//設置QLabel顯示位置
label->setGeometry(x,y,w,h );
//設置QLabel顏色
pal.setColor(QPalette::WindowText, Qt::red);
label->setPalette(pal);
4、在QT界面中顯示文字(未實現中文)
其實,QLabel本來就可以直接顯示文字,下面的代碼主要顯示一些文字顯示的設置,不多說,直接看代碼吧,比較直觀
//設置字體大小
QFont ft;
ft.setPointSize(fontsize);
label->setFont(ft);
//設置背景透明
QPalette pal ;
pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00));
label->setPalette(pal);
//設置字居中顯示 label->setAlignment(Qt::AlignCenter);
Qt::AlignLeft0x0001Aligns with the left edge.Qt::AlignRight0x0002Aligns with the right edge.Qt::AlignHCenter0x0004Centers horizontally in the available space.Qt::AlignJustify0x0008Justifies the text in the available space.
//設置顯示的位置
label->setGeometry(pos.x, pos.y, pos.w, pos.h );
//放到QLabel上顯示
label->setText(str);
label->show();
當然,顯示圖片、動畫和文字還有別的方法,上面是我主要用到的方法,其他的方法以後遇到我再更新吧
5、說說QT4繪圖中的多線程機制
QT4只能在主線程中繪圖,這一點我走了一些彎路。當然QT4也是支持多線程的,其他非主線程中主要完成一些非繪圖的操作,當需要繪圖的時候應該通知主線程,然主線程繪圖,這個通知過程就1+1醫學論文網自然想到信號和槽的機制。要使用信號和槽,在定義類的時候必須包含: Q_OBJECT 宏
具體的實現是在非主線程中發送一個信號,注意信號函數只需要聲明不需要實現。信號函數可以帶參數,但是不能使用指針;信號函數發送的參數在槽函數端會按照相同的順序收到。比如,我們在一個類中聲明瞭一個信號函數sendmeg(int x,int y),然後在某個地方使用emit sendmeg(10,20),與之關聯的槽函數爲domap(int x,int y),那麼在槽函數執行時x=10,y=20。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.