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