Qt常用知识小汇总

一、Qt中显示中文

QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));

QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));

二、设置字体的大小和颜色

QFont ft;

ft.setPointSize(14);  //set words size

//ft.setBold(true);     //words bold

        

QPalette pa;

pa.setColor(QPalette::WindowText, Qt::red);  //set words color

***->setFont(ft);

***->setPalette(pa);

三、设置Button的大小和Button上字体的大小并把Button设为透明

button = new QPushButton(tr("按钮"));

// button ->setGeometry(200, 50, 100, 100);  //设置Button位置和大小(无效)

// button ->resize(100, 100);  //设置大小(无效)

button ->setFixedSize(100, 100);  //设置大小

button ->setFont(QFont("按钮", 20));  //设置Button上的字体大小

button ->setStyleSheet("QPushButton{border-radius:5px;border-width:0px;}");  //透明

四、给Button设置背景图片

button ->setStyleSheet("QPushButton{background-image:url(F:/images/1.png);}");

//设置Button背景图片

button ->setStyleSheet("QPushButton{border-image:url(F:/images/1.png);}");

//设置Button背景图片并使图片自适应Button的大小

注意:语句一在Button上设置背景图片,但改变Button的大小图片大小不会改变。

语句二在Button上不但能设置背景图片,还能让图片自适应Button的大小即改变Buton的大小图片大小也会随之改变,并且不用在设置Button为透明。

五、设置QLineEdit为无边框效果和设置QLineEdit背景颜色

line->setStyleSheet("QLineEdit{border-width:0;border-style:outset}");

//设置QLineEdit无边框并注意其效果

line ->setStyleSheet("QLineEdit{background-color:rgba(0,0,0,0);

border-radius:15px;selection-color:pink}");

//设置背景颜色

modeLine->setReadOnly(true);  //只读

六、设置窗口大小并将其充满屏幕显示

//show the window

QWidget *widget = new QWidget;

widget->setLayout(mainLay);

widget->setFixedSize(1280, 800);  //set window size

setCentralWidget(widget);

//set window full screen

setWindowState(windowState() | Qt::WindowFullScreen);

this->setWindowFlags(Qt::FramelessWindowHint);

七、子窗口居中显示

//Set the window in the center of the screen

QDesktopWidget *desk = QApplication::desktop();

int wd = desk->width();

int ht = desk->height();

this->move((wd - width())/2,(ht - height())/2);

注意,必须加上以下两个头文件,否则错误:

#include

#include

八、窗口模态设置

//当为Dialog时

***->setWindowModality();

//当为QWinget时

***->setAttribute(Qt::WA_ShowModal, true);

九、画笔画线和画刷画一块区域

QPainter painter(this);

painter.setBrush(QBrush(QColor("pink"), Qt::SolidPattern));

painter.drawRect(0, 0, 1280, 800);

painter.setPen(QPen(Qt::black, 3));

painter.drawLine(0, 80, 1280, 80);  //paint a line

十、Qt播放WAV格式音频

QSounds类的实现

QSound继承自QObject类,用于访问平台的音频工具。用一个单一的调用就可以完成这样的一件事:

QSound::play("mysounds/bells.wav");

当建立一个声音文件对象, 以后再进行播放的时候,提供了第二个API:

QSound bells("mysounds/bells.wav");

bells.play();

第二种模式相对第一种模式,播放时可能会占用较多的内存,但播放的会更流畅直接些。

值得注意的是:(1)头文件 #include "qsound.h" (2)仅支持WAVE格式

十一、QTableWidget用法

1 创建

#include

#include

#include

QTableWidget *showTable = new QTableWidget;

showTable->setColumnCount(5);   //5列

showTable->setRowCount(100);    //100行

//等价于:QTableWidget * showTable = new QTableWidget(100,5);

showTable ->setWindowTitle("学生信息");

showTable ->resize(350, 200);

QStringList headers;

headers << "学 号" << "姓 名" << "性 别" << "年 龄" << "班 级";

showTable->setHorizontalHeaderLabels(headers);

showTable ->setItem(0,0,new QTableWidgetItem("1"));

showTable ->setItem(0,1,new QTableWidgetItem("张三"));

showTable ->setItem(0,2,new QTableWidgetItem("男"));

showTable ->setItem(0,3,new QTableWidgetItem("18"));

showTable ->setItem(0,4,new QTableWidgetItem("3班"));

showTable ->show();

2将表格变为禁止编辑

showTable ->setEditTriggers(QAbstractItemView::NoEditTriggers);

3设置表格为选择整行

showTable ->setSelectionBehavior(QAbstractItemView::SelectRows);

4设置单个选中和多个选中

showTable ->setSelectionMode(QAbstractItemView::ExtendedSelection);

//设置为可以选中多个目标

5表格表头的显示与隐藏(注意:需要 #include )

showTable ->verticalHeader()->setVisible(false);   //隐藏列表头

showTable ->horizontalHeader()->setVisible(false); //隐藏行表头

6设置具体单元格中字体格式(注意:需要 #include )

QTableWidgetItem *columnHeaderItem0 = tableWidget->horizontalHeaderItem(0);

//获得水平方向表头的Item对象

columnHeaderItem0->setFont(QFont("Helvetica")); //设置字体

columnHeaderItem0->setBackgroundColor(QColor(0,60,10)); //设置单元格背景颜色

columnHeaderItem0->setTextColor(QColor(200,111,30)); //设置文字颜色

7设置具体单元格的值

showTable ->setItem(1, 0, new QTableWidgetItem(str));

8设置具体单元格中字体格式

showTable ->item(1, 0)->setBackgroundColor(QColor(0,60,10));  

showTable ->item(1, 0)->setTextColor(QColor(200,111,100));

showTable ->item(1, 0)->setFont(QFont("Helvetica"));

9设置具体单元格中字体的对齐方式

showTable ->item(0, 0)->setTextAlignment(Qt::AlignHCenter);

10把QTableWidgetItem对象内容转换为QString

QString str = showTable t->item(0, 0)->data(Qt::DisplayRole).toString();

11在单元格里加入控件

         QTableWidget不仅允许把文字加到单元格,还允许把控件也放到单元格中。比如,把一个下拉框加入单元格,可以这么做:

QComboBox *comBox = new QComboBox();

comBox->addItem("Y");

comBox->addItem("N");

showTable ->setCellWidget(0,2,comBox);

12合并单元格

showTable ->setSpan(2, 2, 3, 2);

//第一个参数:要改变的单元格行数     第二个参数:要改变的单元格列数

//第三个参数:需要合并的行数         第四个参数:需要合并的列数

13具体单元格中插入图片

showTable ->setItem(3, 2, new QTableWidgetItem(QIcon("images/music.png"), "Music"));

14设置显示网格

showTable ->setShowGrid(true);//显示表格线

15设置单元格的大小

首先,可以指定某个行或者列的大小:

showTable ->setColumnWidth(3,200); 

showTable ->setRowHeight(3,60);

还可以将行和列的大小设为与内容相匹配:

showTable ->resizeColumnsToContents(); 

showTable ->resizeRowsToContents();

16添加表头内容

方法一

QStringList header;

header<<""<<tr("1")<<tr("2")<<tr("3")<<tr("4)<<tr("5");

方法二

tableWidget->setHorizontalHeaderLabels(QStringList()  <<

                                   tr("1")<<tr("2")<<tr("3")<<tr("4)<<tr("5"));

17获取某一单元格的内容

QString strText = showTable ->item(0, 0)->text();

18设置滚动条

showTable ->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉水平滚动条

19清除

showTable ->clear();  //清除所有可见数据(包括表头)

showTable ->clearContents();  //只清除表中数据(不清除表头内容)

20其他

int row = showTable ->rowCount();//获取表格中当前总行数

showTable ->setRowCount(row+1);//添加一行

showTable ->removeRow(row);//清除已有的行列

int row1 = showTable ->currentItem()->row();//当前选中行

bool focus = showTable ->isItemSelected(tableWidget->currentItem());//判断是否选中一行

QString proName = showTable ->item(row, col)->text();//获取某一格内容

QHeaderView *headerView = horizontalHeader();

headerView->setMovable(false);//去除表头的移动

headerView->resizeSection(0,284);//设置第一列宽

headerView->resizeSection(1,127);//设置第二列宽

headerView->setResizeMode(QHeaderView::Fixed);//列表不能移动

headerView->setClickable(false);//不响应鼠标单击

headerView->setHidden(true);//去掉左边默认自带的行号

setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉水平滚动条

setVerticalScrollMode(QAbstractItemView::ScrollPerItem);//垂直滚动条按项移动

setAutoScroll(false);//去掉自动滚动

猜你喜欢

转载自blog.csdn.net/qq_35970739/article/details/82531619