Qt的一些整理
2017-09-21 09:33
127 查看
二、详解
1、获取屏幕的工作区的大小
[cpp] view plain copy
{
//获取屏幕分辨率
qDebug()<< "screen width:"<<QApplication::desktop()->width();
qDebug()<< "screen height:"<<QApplication::desktop()->height();
//下面方法也可以
qDebug()<< "screen width:"<<qApp->desktop()->width();
qDebug()<< "screen height:"<<qApp->desktop()->height();
//获取客户使用区大小
qDebug()<< "screen avaliabe width:"<<QApplication::desktop()->availableGeometry().width();
qDebug()<< "screen avaliabe heigth:"<<QApplication::desktop()->availableGeometry().height();
//获取应用程序矩形大小
qDebug()<< "application avaliabe width:"<<QApplication::desktop()->screenGeometry().width();
qDebug()<< "application avaliabe heigth:"<<QApplication::desktop()->screenGeometry().height();
}
移动到窗口中央:
move((QApplication::desktop()->width() - width())/2, (QApplication::desktop()->height() - height())/2);
全屏设置:
setWindowState(Qt::WindowFullScreen);
2、设置应用程序图标
[cpp] view plain copy { QIcon icon; icon.addPixmap(QPixmap(QString::fromUtf8(":/images/logo.png")), QIcon::Normal, QIcon::Off); win->setWindowIcon(icon); win->setIconSize(QSize(256, 256)); }
3、显示图片Label
[cpp] view plain copy { QLabel *logoLabel; logoLabel = new QLabel(); logoLabel->setObjectName(QString::fromUtf8("logolabel")); logoLabel->setGeometry(QRect(160, 110, 128, 128)); logoLabel->setPixmap(QPixmap(QString::fromUtf8(":/images/logo.png"))); logoLabel->setScaledContents(true); }
4、字体更改
[cpp] view plain copy { QFont font; font.setPointSize(40); font.setBold(true); font.setWeight(75); QLabel *fontLabel = new QLabel(); fontLabel->setFont(font); }
5、文本颜色更改
[cpp] viewplain copy
void Widget::changeColor(QWidget *window, QColor color)
{
QPalette *palette = new QPalette();
palette->setColor(QPalette::Text, color);
window->setPalette(*palette);
delete palette;
}
6、时间日期转QString
[cpp] viewplain copy
QString date_str = QDate::currentDate().toString(QString("yyyyMMdd")); //"yyyyMMdd"为转换格式,该格式转换后日期如"20121205"
QString time_str = QTime::currentTime().toString(QString("hhmmss")); //"hhmmss"为转换格式,该格式转换后时间如"080359"
7、Qt界面风格
[cpp] viewplain copy
qApp>setStyle(new QPlastiqueStyle); //在window中main函数中使用这句话会让界面快速的变得好看。
8、qobject_cast用法
函数原型:T qobject_cast (QObject * object)
该方法返回object向下的转型T,如果转型不成功则返回0,如果传入的object本身就是0则返回0。
使用场景:
当某一个Object emit一个signal的时候(即sender),系统会记录下当前是谁emit出这个signal的,所以在对应的slot里就可以通过 sender()得到当前是谁invoke了slot。有可能多个 Object的signal会连接到同一个signal(例如多个Button可能会connect到一个slot函数onClick()),因此这是就需要判断到底是哪个Object emit了这个signal,根据sender的不同来进行不同的处理.
在槽函数中:
QPushButton *button_tmp = qobject_cast<QPushButton *>(sender()); //信号的对象,向下转型为按钮类型
9、Qslider进入显示
[cpp] viewplain copy
{
slider = new QSlider;
slider->setRange(0,100);
slider->setTickInterval(10);
slider->setOrientation(Qt::Horizontal);
slider->setValue(100);
slider->setVisible(false);
connect(slider,SIGNAL(valueChanged(int)),this,SLOT(slotChanged(int)));
}
void PicTrans::enterEvent ( QEvent * )
{
slider->setVisible(true);
}
void PicTrans::leaveEvent(QEvent *)
{
slider->setVisible(false);
}
进入slider显示,离开slider隐藏。
10、Qt不重复随机数
[cpp] viewplain copy
{ //qt
QTime time; time= QTime::currentTime();
qsrand(time.msec()+time.second()*1000);
qDebug() << qrand() % 100; //在0-100中产生出随机数
}
[cpp] view
plain copy
{ //c语言
srand(unsigned(time(0)));
int number = rand() % 100; /*产生100以内的随机整数*/
}
11、QSettings保存窗口状态
[cpp] viewplain copy
void
Settings::readSettings()
{
QSettings setting("MyPro","settings");
setting.beginGroup("Dialog");
QPoint pos = setting.value("position").toPoint();
QSize size = setting.value("size").toSize();
setting.endGroup();
setting.beginGroup("Content");
QColor color = setting.value("color").value<QColor>();
QString text = setting.value("text").toString();
setting.endGroup();
move(pos);
resize(size);
QPalette p = label->palette();
p.setColor(QPalette::Normal,QPalette::WindowText,color);
label->setPalette(p);
edit->setPlainText(text);
}
void
Settings::writeSettings()
{
QSettings setting("MyPro","settings");
setting.beginGroup("Dialog");
setting.setValue("position",pos());
setting.setValue("size",size());
setting.endGroup();
setting.beginGroup("Content");
setting.setValue("color",label->palette().color(QPalette::WindowText));
setting.setValue("text",edit->toPlainText());
setting.endGroup();
}
12、两个信号连接同一个槽
参考上述的例8。[cpp] view
plain copy
connect(ui->btn_ok, SIGNAL(clicked()), this, SLOT(slotClick()));
connect(ui->btn_cancel, SIGNAL(clicked()), this, SLOT(slotClick()));
[cpp] view
plain copy
void Dialog::slotClick()
{
QPushButton* btn = dynamic_cast<QPushButton*>(sender());
if (btn == ui->btn_ok) {
qDebug() << "button:" <<ui->btn_ok->text();
}
else if (btn == ui->btn_cancel) {
qDebug() << "button:" <<ui->btn_cancel->text();
}
}
有时button类型不同时,可以分别判断对象指针。
[cpp] view
plain copy
void Dialog::slotClick()
{
;
if ((QPushButton* btn = dynamic_cast<QPushButton*>(sender())) == ui->btn_ok) {
qDebug() << "button:" <<ui->btn_ok->text();
}
else if ((QRadioButton* btn = dynamic_cast<QRadioButton*>(sender())) == ui->btn_cancel) {
qDebug() << "button:" <<ui->btn_cancel->text();
}
}
13、对话框操作
视图模型中, 设置视图不可编辑 setEditTriggers(QAbstractItemView::NoEditTriggers);对话框去掉右上角的问号: setWindowFlags(windowFlags()&~Qt::WindowContextHelpButtonHint);
对话框加上最小化按钮: setWindowFlags(windowFlags()|Qt::WindowMinimizeButtonHint);
14、多语言国际化
1.pro工程文件里面添加 TRANSLATIONS+=mypro.ts2.选择Qt Creator环境的菜单栏 工具->外部->Qt语言家->更新翻译(或lupdate mypro.pro或lupdate-qt4mypro.pro)
3.桌面开始菜单里面Qt目录打开 Linguist工具
4.Linguist工具加载生成好的mypro.ts文件
5.填好翻译, 保存, Release, 就生成好编译后的qm文件
6.在工程的源文件中, 这样加载qm文件:
QTranslator translator;
QLocale locale;
if(QLocale::Chinese == locale.language())
{//中文环境
translator.load("mypro.qm"); //中文
a.installTranslator(&translator);
}//否则默认用英文
15、item-view控件多选后删除
[cpp] viewplain copy
setSelectionMode(QAbstractItemView::MultiSelection); //不按ctrl键即可多选
setSelectionMode(QAbstractItemView::ExtendedSelection); //按ctrl键多选
QModelIndexList indexList = ui->listvFiles->selectionModel()->selectedRows();
QModelIndex index;
int i = 0;
foreach(index, indexList)
{
this->modFileLists.removeRow(index.row() - i);
++i;
}
16、QByteArray存入中文时乱码
[cpp] viewplain copy
QByteArray bytes;
bytes.append(this->modFileLists.data(this->modFileLists.index(i), Qt::DisplayRole).toString()); //乱码
QByteArray bytes;
bytes.append(this->modFileLists.data(this->modFileLists.index(i), Qt::DisplayRole).toString().toLocal8Bit()); //正常
17、Qt托盘
[cpp] viewplain copy
//使用QSystemTrayIcon类
QSystemTrayIcon *tray; //托盘
QMenu *meuTray; //托盘菜单
QAction *acTrayQuit; //托盘退出
this->tray = new QSystemTrayIcon(this);
this->meuTray = new QMenu(this);
this->acTrayQuit = this->meuTray->addAction(QIcon(":/res/image/quit.png"), tr("Quit"));
connect(this->acTrayQuit, SIGNAL(triggered()), this, SLOT(OnExit()));
this->tray->setContextMenu(this->meuTray);
this->tray->setIcon(QIcon(":/res/image/tray.ico"));
this->tray->show();
connect(this->tray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(OnTrayActivated(QSystemTrayIcon::ActivationReason)));
voidUpdateTerminal::OnTrayActivated(QSystemTrayIcon::ActivationReasonreason)
{
switch(reason)
{
caseQSystemTrayIcon::DoubleClick:
if(this->isHidden())
this->show();
break;
}
}
18、Qt递归遍历文件和文件夹
[cpp] viewplain copy
//递归遍历文件夹,找到所有的文件
//_filePath:要遍历的文件夹的文件名
int FindFile(const QString& _filePath)
{
QDir dir(_filePath);
if (!dir.exists()) {
return -1;
}
//取到所有的文件和文件名,但是去掉.和..的文件夹(这是QT默认有的)
dir.setFilter(QDir::Dirs|QDir::Files|QDir::NoDotAndDotDot);
//文件夹优先
dir.setSorting(QDir::DirsFirst);
//转化成一个list
QFileInfoList list = dir.entryInfoList();
if(list.size()< 1 ) {
return -1;
}
int i=0;
//递归算法的核心部分
do{
QFileInfo fileInfo = list.at(i);
//如果是文件夹,递归
bool bisDir = fileInfo.isDir();
if(bisDir) {
FindFile(fileInfo.filePath());
}
else{
//bool isDll = fileInfo.fileName().endsWith(".dll");
qDebug() << fileInfo.filePath() << ":" <<fileInfo.fileName();
}//end else
i++;
} while(i < list.size());
}
若只想获取文件名,也可以这样使用:
[cpp] view
plain copy
int FindFile(const QString& _filePath)
{
QDir dir(_filePath);
if (!dir.exists()) {
return -1;
}
//取到所有的文件和文件名,但是去掉.和..的文件夹(这是QT默认有的)
dir.setFilter(QDir::Dirs|QDir::Files|QDir::NoDotAndDotDot);
//文件夹优先
dir.setSorting(QDir::DirsFirst);
//转化成一个list
QFileInfoList list = dir.entryInfoList();
QStringList infolist = dir.entryList(QDir::Files | QDir::NoDotAndDotDot);
if(list.size()< 1 ) {
return -1;
}
int i=0;
//递归算法的核心部分
do{
QFileInfo fileInfo = list.at(i);
//如果是文件夹,递归
bool bisDir = fileInfo.isDir();
if(bisDir) {
FindFile(fileInfo.filePath());
}
else{
for(int m = 0; m <infolist.size(); m++) {
//这里是获取当前要处理的文件名
qDebug() << infolist.at(m);
}
break;
}//end else
i++;
} while(i < list.size());
}
19、Qt调用外部程序QProcess
(1)使用startDetached或execute使用QProcess类静态函数QProcess::startDetached(const QString &program, constQStringList &argument)或者QProcess::execute(const QString &program, const QStringList &argument);startDetached 函数不会阻止进程, execute会阻止,即等到这个外部程序运行结束才继续执行本进程。
例如执行:Shutdown.exe -t -s 3600
[html] view
plain copy
QStringList list;
list<< "-t" << "--s" << "3600";
QProcess::startDetached("Shutdown.exe",list);
// QProcess::execute("Shutdown.exe",list);
(2)创建QProcess,使用start函数
可以查看外部程序返回的数据,输出结果。
[html] view
plain copy
QProcess *pProces = new QProcess(this);
connect(pProces, SIGNAL(readyRead()),this, SLOT(on_read()));
QStringList list;
pProces->start("Shutdown.exe", list);
void on_read()
{
QProcess *pProces = (QProcess *)sender();
QString result = pProces->readAll();
QMessageBox::warning(NULL, "", result);
}
(3)执行的是程序,如route、ipconfig
[html] view
plain copy
QProcess p(0);
p.start("route");
p.waitForStarted();
p.waitForFinished();
qDebug()<<QString::fromLocal8Bit(p.readAllStandardError());
[html] view
plain copy
QProcess p(0);
p.start("ipconfig");
p.waitForStarted();
p.waitForFinished();
qDebug()<<QString::fromLocal8Bit(p.readAllStandardOutput());
(4)执行的是命令,如dir
[html] view
plain copy
QProcess p(0);
p.start("cmd");
p.waitForStarted();
p.write("dir\n");
p.closeWriteChannel();
p.waitForFinished();
qDebug()<<QString::fromLocal8Bit(p.readAllStandardOutput());
或者:
[html] view
plain copy
QProcess p(0);
p.start("cmd", QStringList()<<"/c"<<"dir");
p.waitForStarted();
p.waitForFinished();
qDebug()<<QString::fromLocal8Bit(p.readAllStandardOutput());
(5)QProcess使用管道(命令中不支持管道符|)
一个进程的标准输出流到目标进程的标准输入:command1 | command2。
[html] view
plain copy
QProcess process1;
QProcess process2;
process1.setStandardOutputProcess(&process2);
process1.start("command1");
process2.start("command2");
20、当前系统Qt所支持的字体
系统支持的所有字体的名称[cpp] view
plain copy
QFontDatabase database;
foreach (QString strFamily, database.families()) {
qDebug() <<"family:" << strFamily;
foreach (QString strStyle, database.styles(strFamily)) {
qDebug() << "-----style:" << strStyle;
}
}
系统中所有支持中文的字体名称
[cpp] view
plain copy
QFontDatabase database;
foreach (const QString &family, database.families(QFontDatabase::SimplifiedChinese))
{
qDebug()<<family;
}
中文乱码:
[html] view
plain copy
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
21、IP正则匹配
[cpp] viewplain copy
{
/**********judge ip**********/
QRegExp regExp("(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)");
if(!regExp.exactMatch(ip)) {
flag = false;
ipAddressLineEdit->clear();
ipAddressLineEdit->setError(true);
ipAddressLineEdit->setHint(tr(" IpAddress is wrong"));
}
else flag = true;
}
22、QPushButton去掉虚线框
[cpp] viewplain copy
QPushButton:focus{padding: -1;}
/*
{border-style:flat;} //扁平
button->setFlat(true)
ui->checkBox->setFocusPolicy(Qt::NoFocus);
ui->radioButton->setFocusPolicy(Qt::NoFocus);
*/
23、Qt临时获得root权限
(1)getuid()函数返回一个调用程序的真实用户ID,使用root执行程序时getuid()返回值为0。[cpp] view
plain copy
if (getuid() != 0)
{
QMessageBox::information(0, QString(QObject::tr("Warnning")),
QString(QObject::tr("do not use root privage")),
QString(QObject::tr("OK")));
return -1;
}
(2)临时获得root权限
使用getuid()/setuid()函数,让程序临时获得root权限代码。
[cpp] view
plain copy
/*
* gcc -g -o test-uid test-uid.c
* chown root.root ./test-uid
* chmod 4755 ./test-uid
* ls -al /var
* */
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main(int argc, char **argv)
{
// save user uid
uid_t uid = getuid();
// get root authorities
if(setuid(0)) {
printf("test-uid: setuid error");
return -1;
}
printf("test-uid: run as root, setuid is 0\n");
system ("touch /var/testroot");
// rollback user authorities
if(setuid(uid)) {
printf("test-uid: setuid error");
return -1;
}
printf("test-uid: run as user, setuid is %d\n", uid);
system ("touch /var/testuser");
return 0;
}
24、Qt窗口的透明度设置
(1)设置窗体的背景色在构造函数里添加代码,需要添加头文件qpalette或qgui
QPalette pal = palette();
pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00));
setPalette(pal);
通过设置窗体的背景色来实现,将背景色设置为全透。
效果:窗口整体透明,但窗口控件不透明,QLabel控件只是字显示,控件背景色透明;窗体客户区完全透明。
(2)在MainWindow窗口的构造函数中使用如下代码:
this->setAttribute(Qt::WA_TranslucentBackground, true);
效果:窗口变透明,label也变透明,看不到文字,但是其它控件类似textEdit、comboBox就不会透明,实现了窗口背景透明。
(3)在MainWindow窗口的构造函数中使用如下代码
this->setWindowOpacity(level);其中level的值可以在0.0~1.0中变化。
效果:窗口变成透明的,但是所有控件也是一样变成透明。
(4)窗口整体不透明,局部透明:
在Paint事件中使用Clear模式绘图。
void TestWindow::paintEvent( QPaintEvent* )
{
QPainter p(this);
p.setCompositionMode( QPainter::CompositionMode_Clear );
p.fillRect( 10, 10, 300, 300, Qt::SolidPattern );
}
效果:绘制区域全透明。如果绘制区域有控件不会影响控件
25、Qt解决中文乱码
在Windows下常使用的是GBK编码,Linux下常使用的是utf-8编。选一下任意试试:
[html] view
plain copy
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF8"));
//获取系统编码,否则移植会出现乱码
QTextCodec*codec = QTextCodec::codecForName("System");
//设置和对本地文件系统读写时候的默认编码格式
QTextCodec::setCodecForLocale(codec);
//设置传给tr函数时的默认字符串编码
QTextCodec::setCodecForTr(codec);
//用在字符常量或者QByteArray构造QString对象时使用的一种编码方式
QTextCodec::setCodecForCStrings(codec);
支持linux单一系统时:
[html] view
plain copy
QTextCodec *codec = QTextCodec::codecForName("utf8");
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
26、图片做背景缩放
[html] viewplain copy
QPixmap backGroundPix = QPixmap(":/resources/images/login.png");
QMatrix martix;
martix.scale(0.95, 0.9);
backGroundPix = backGroundPix.transformed(martix);
resize(backGroundPix.width(), backGroundPix.height());
QPalette palette;
palette.setBrush(QPalette::Window,QBrush(backGroundPix));
setPalette(palette);
或者:
[html] view
plain copy
QPixmap backGroundPix;
backGroundPix.load(":/resources/images/login.png");
setAutoFillBackground(true); // 这个属性一定要设置
QPalette pal(palette());
pal.setBrush(QPalette::Window, QBrush(_image.scaled(size(), Qt::IgnoreAspectRatio, \
Qt::SmoothTransformation)));
setPalette(pal);
27、Qt之界面出现、消失动画效果
(1)界面出现将下面这段代码放在界面的构造函数当中就行
//界面动画,改变透明度的方式出现0 - 1渐变
QPropertyAnimation *animation = newQPropertyAnimation(this, "windowOpacity");
animation->setDuration(1000);
animation->setStartValue(0);
animation->setEndValue(1);
animation->start();
(2)界面消失:
既然是界面消失,应当是按下关闭按钮时界面消失,如下:
//连接关闭按钮信号和槽
QObject::connect(close_button, SIGNAL(clicked()), this,SLOT(closeWidget()));
//槽函数如下,主要进行界面透明度的改变,完成之后连接槽close来调用closeEvent事件
bool LoginDialog::closeWidget()
{
//界面动画,改变透明度的方式消失1 - 0渐变
QPropertyAnimation *animation= new QPropertyAnimation(this, "windowOpacity");
animation->setDuration(1000);
animation->setStartValue(1);
animation->setEndValue(0);
animation->start();
connect(animation,SIGNAL(finished()), this, SLOT(close()));
return true;
}
void LoginDialog::closeEvent(QCloseEvent *)
{
//退出系统
QApplication::quit();
}
界面消失的类似方法(比较笨拙,而且效率差):
void LoginDialog::closeEvent(QCloseEvent *)
{
for(int i=0; i< 100000; i++)
{
if(i<10000)
{
this->setWindowOpacity(0.9);
}
else if(i<20000)
{
this->setWindowOpacity(0.8);
}
else if(i<30000)
{
this->setWindowOpacity(0.7);
}
else if(i<40000)
{
this->setWindowOpacity(0.6);
}
else if(i<50000)
{
this->setWindowOpacity(0.5);
}
else if(i<60000)
{
this->setWindowOpacity(0.4);
}
else if(i<70000)
{
this->setWindowOpacity(0.3);
}
else if(i<80000)
{
this->setWindowOpacity(0.2);
}
else if(i<90000)
{
this->setWindowOpacity(0.1);
}
else
{
this->setWindowOpacity(0.0);
}
}
//进行窗口退出
QApplication::quit();
}
28、Qt获取系统文件图标
1、获取文件夹图标QFileIconProvider icon_provider;
QIcon icon = icon_provider.icon(QFileIconProvider::Folder);
2、获取指定文件图标
QFileInfo file_info(name);
QFileIconProvider icon_provider;
QIcon icon = icon_provider.icon(file_info);
29、Qt把整形数据转换成固定长度字符串
有时需要把money的数字转换成固定格式,如660066转换成660,066,就需要把整形数据转换成固定长度字符串(即前面位数补0的效果)。有如下方法:[html] view
plain copy
QString int2String(int num, int size)
{
QString str = QString::number(num);
str = str.rightJustified(size,'0');
return str;
}
或
[html] view
plain copy
QString int2String(int number, int size)
{
return QString("%1").arg(number, size, 10, QChar('0'));
}
或
[html] view
plain copy
QString int2String(int number, int size)
{
QString str;
str.fill('0', size);
str.push_back(QString::number(number));
str = str.right(size);
return str;
}
故处理数字:
[html] view
plain copy
QString value = "";
QString temp = "";
int number = 100060010;
if (number < 1000) {
value = QString::number(number);
}
else if (number < 1000 * 1000) {
value = QString::number(number/1000);
value += ",";
//temp = QString::number(number%1000);
//temp = temp.rightJustified(3,'0');
//temp.fill('0', 3);
//temp.push_back(QString::number(number));
//temp = temp.right(3);
value += QString("%1").arg(number%1000, 3, 10, QChar('0'));
}
else if (number < 1000*1000*1000) {
value = QString::number(number/(1000*1000));
value += ",";
number = number%(1000*1000);
value += QString("%1").arg(number/1000, 3, 10, QChar('0'));
value += ",";
value += QString("%1").arg(number%1000, 3, 10, QChar('0'));
}
qDebug() << "==============" << value;
输出:============== "100,060,010"
30、QLabel的强大功能
(1)QLabel的自动换行pLabel->setWordWrap(true);[html] view
plain copy
QTextCodec *codec = QTextCodec::codecForName("utf8");
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
QLabel *pLabel = new QLabel(this);
pLabel->setStyleSheet("color: red");
//pLabel->setAlignment(Qt::AlignCenter);
pLabel->setGeometry(30, 30, 150, 150);
pLabel->setWordWrap(true);
QString strText = QString("床前明月光,疑是地上霜。举头望明月,低头思故乡。");
QString strHeightText = "<p style=\"line-height:%1%\">%2<p>";
strText = strHeightText.arg(150).arg(strText);
pLabel->setText(strText);
(2)QLabel的过长省略加tips,通过QFontMetrics来实现
[html] view
plain copy
QTextCodec *codec = QTextCodec::codecForName("utf8");
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
QLabel *pLabel = new QLabel(this);
pLabel->setStyleSheet("color: red");
pLabel->setGeometry(30, 30, 150, 150);
pLabel->setWordWrap(true);
QString strText = QString("床前明月光,疑是地上霜。举头望明月,低头思故乡。");
QString strElidedText = pLabel->fontMetrics().elidedText(strText, Qt::ElideRight, 150, Qt::TextShowMnemonic);
pLabel->setText(strElidedText);
pLabel->setToolTip(strText);
(3)QLabel的富文本
[html] view
plain copy
QTextCodec *codec = QTextCodec::codecForName("utf8");
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
QLabel *pLabel = new QLabel(this);
pLabel->setStyleSheet("color: red");
//pLabel->setAlignment(Qt::AlignCenter);
pLabel->setGeometry(30, 30, 150, 150);
pLabel->setWordWrap(true);
QString strHTML = QString("<html> \
<head> \
<style> font{color:red;} #f{font-size:18px; color: green;} </style> \
</head> \
<body>\
<font>%1</font><font id=\"f\">%2</font> \
</body> \
</html>").arg("Hello").arg("World");
pLabel->setText(strHTML);
pLabel->setAlignment(Qt::AlignCenter);
相关文章推荐
- 一些遇到的Qt程序在Windows平台间移植问题整理
- 一些遇到的Qt程序在Windows平台间移植问题整理
- 大数据与机器学习的一些博文整理
- intellij idea 的一些整理
- 修改MySQL 5.7.9版本的root密码方法以及一些新变化整理
- meta标签整理的一些用法
- DIV+CSS网页布局常用的一些基础知识整理
- Session一些整理
- Qt 练习遇到的一些问题
- 【Qt开发】Qt5 中对 C++11 一些新特性的封装
- iOS开发的一些小技巧(整理版)
- 考数据库系统会用到的一些计算方法和题目整理(6)
- 关于RunLoop的一些的资料整理记录
- 一些QT基础知识
- GitHub上整理的一些工具
- 个人整理前端的一些方法-持续更新
- 报错注入的一些整理 By Assassin
- DIV+CSS网页布局常用的一些基础知识整理
- 一些语法盲点整理