QT中如何将图片作为按键的背景色以及中文显示
通过下述代码来讲解:
1 #include <QApplication>
2 #include <QPushButton>
3 #include <QLabel>
4 #include <QGridLayout>
5 #include <QTextCodec>
6
7 int main(int argc,char *argv[])
8 {
9 QApplication app(argc,argv);
10
11 QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf8"));
12 QTextCodec::setCodecForLocale(QTextCodec::codecForName("utf8"));
13 QTextCodec::setCodecForTr( QTextCodec::codecForName("utf8"));
14
15
16 QWidget *widget = new QWidget();
17 widget->setFixedSize(800, 600);
18 widget->move(200,200);
19
20
21 QPixmap *pixmap = NULL;
22 pixmap = new QPixmap(200,150);
23 pixmap->load(":/images/butterfly1.png");
24
25 QIcon *icon = new QIcon(*pixmap);
26
27 QPushButton *button = new QPushButton(*icon,"", widget);
28 button->setIconSize(QSize(190, 150));
29 button->setFixedSize(200,150);
30
31 QLabel *label = new QLabel(widget);
32 QLabel *label1 = new QLabel(widget);
33 label->setPixmap(*pixmap);
34 label->setFixedSize(200, 150);
35 label1->setText("Qt中文显示:");
36 label1->setStyleSheet("font-size : 53px");
37
38 QPalette pe;
39 pe.setColor(QPalette::WindowText,Qt::blue);
40 label1->setPalette(pe);
43 QGridLayout *layout=new QGridLayout;
44 layout->addWidget(button,0,0);
45 layout->addWidget(label,0,1);
46 layout->addWidget(label1,1,0,2,1);
47 widget->setLayout(layout);
48 widget->showNormal();
49 return app.exec();
50 }
1.首先讲解一下如何将图片设置为按键的背景色:
方法一:使用代码的方式
QPixmap *pixmap = NULL; //创建保存图片的指针
22 pixmap = new QPixmap(200,150); //为该指针分配空间
23 pixmap->load(":/images/butterfly1.png");//将图片导入该空间内
24
25 QIcon *icon = new QIcon(*pixmap);
26
27 QPushButton *button = new QPushButton(*icon,"", widget); //创建按钮并将其背景色设置为图片
28 button->setIconSize(QSize(190, 150)); //设置图片在按键中所占空间
29 button->setFixedSize(200,150); //设置按键的大小
方法二:使用qt-creator 工具。
首先要创建资源文件。
点击按键所在的ui界面-----〉右下方有关于按键的属性设置----->选择ICON-----〉进入资源文件选择---->再选择图片。
通过以上代码就可以将图片设置为按键的背景色了。
2.再讲解一下中文的显示(主要通过以下三行代码实现):
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf8"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("utf8"));
QTextCodec::setCodecForTr( QTextCodec::codecForName("utf8"));
在此读者就必须了解gb2312 utf8 gbk等常见编码方式的区别,以及各系统下默认的中文编码方式。
通常在linux中默认的方式为uft8,而在window下默认的方式为gbk。
所以代码中使用了utf8
其次就需要了解上面三个函数的作用(都可从其后缀猜出其功能,通常程序中最好是将三个函数都实现):
setCodecForCStrings();使中文字符串的中文显示生效。
setCodecForLocale():用于设置和对本地文件系统读写时候的默认编码
格式。比如通过流读取一个文件内容时的编码格式。或者通过qDebug()
输出打印信息时的编码。
setCodecForTr():设置tr函数的默认字符串编码。