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);//去掉自动滚动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值