一、QPushButton

1、设置背景色:

ui->pushButton->setStyleSheet("background-color: rgb(170, 0, 255)";);

2、设置鼠标放上去的提示语

在设计师界面,设置按钮的tooltip

二、QTextEdit

1、判断是否为空

QString str = ui->textEdit->toPlainText();//获取内容

if(str.isEmpty()) {do something}

2、末尾追加字符串,换行

直接用QTextEdit.append()函数;注意此函数在追加的时候会在新的一行追加

3、判断内容是否已经改变

ui->textEdit->document().isModified();//如果改变

4、通过HTML方式设置颜色(转)

void MainWindow::stringToHtmlFilter(QString &str)//将HTML不能识别的字符转化为能够识别的

{

str.replace("&","&");

str.replace(">",">");

str.replace("<","&lt;");

str.replace("\"","&quot;");

str.replace("\'","'");

str.replace(" ","&nbsp;");

str.replace("\n","<br>");

str.replace("\r","<br>");

}

void MainWindow::stringToHtml(QString &str, QColor crl)//根据传入的颜色设置成HTML字符串

{

QByteArray array;

array.append(crl.red());

array.append(crl.green());

array.append(crl.blue());

QString strC(array.toHex());

str = QString("<span style=\" color:#%1;\">%2</span>").arg(strC).arg(str);

}

ui->textEdit->insertHtml(htmlStr);

5、通过设置格式的方式改变颜色

QString appendStr("testAAtest");//给AA添加颜色

int postionOfAA = appendStr.indexOf("AA",0,Qt::CaseInsensitive);//AA在这个字符串中的位置

QTextCursor tempCursor = ui->textEdit->textCursor();//获取控件光标指针

int num1 = tempCursor.position();//之前光标的位置

ui->textEdit->append(appendStr);//添加信息

tempCursor.setPosition(num1 + postionOfAA + 1);//将光标初始位置设置在第一个A前面,+1是因为有个回车符号

tempCursor.setPosition(num1 + postionOfAA + 1 + 2,QTextCursor::KeepAnchor);//使光标位置固定,拖动到下两个字符,选中AA

QColor color(255,0,0);//定义一个红色QColor变量

QTextCharFormat fmt;//定义一个QTextCharFormat变量

fmt.setForeground(color);//颜色设置为红色

tempCursor.setCharFormat(fmt);//给这个光标对象设置这个格式变量

tempCursor.clearSelection();//设置颜色之后取消选中的位置

6、获取行数

ui->textEdit->document()->lineCount()

7、设置scrollbar的样式

ui->textEdit->verticalScrollBar()->setStyleSheet(

"QScrollBar:vertical{width:8px;background:rgba(0,0,0,0%);margin:0px,0px,0px,0px;padding-top:9px;padding-bottom:9px;}"

"QScrollBar::handle:vertical{width:8px;background:rgba(0,0,0,25%);border-radius:4px;min-height:20;}"

"QScrollBar::handle:vertical:hover{width:8px;background:rgba(0,0,0,50%);border-radius:4px;min-height:20;}"

);

8、设置最多行数

ui->textEdit->document()->setMaximumBlockCount(1000);//最多行数限制

9、滑动条移动,内容不滚动

QScrollBar* tempScrollBar = ui->textEdit_8->verticalScrollBar();

int scrollPosition = tempScrollBar->sliderPosition();

ui->textEdit_8->setText("需要添加的内容");

tempScrollBar->setSliderPosition(scrollPosition);

10、末尾追加时不换行

ui->textEdit->moveCursor(QTextCursor::End);

ui->textEdit->insertPlainText(info);

三、QComboBox

1、添加项

直接在ui界面右键控件-》编辑项目,点+

2、获取当前的文本

ui->combox->currentText()

3、获取当前的序号

ui->comboBox->currentIndex()

4、设置当前显示索引号

ui->comboBox->setCurrentIndex(-1);//-1时显示空

5、判断当前值是输入的还是自己选的

if((ui->comboBox->currentText())==(ui->comboBox>itemText(ui->comboBox->currentIndex())))//目的地址

{

//即使用户输入了数据,currentIndex依然是原来选的,所以需要判断当前text是否与index的相同

}

四、QMessageBox

QMessageBox有几个静态函数,举例一个

QMessageBox::StandardButton tempBtn = QMessageBox::question(NULL,"Notepad","Save to NoTitle?",QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel,QMessageBox::Yes);

if(tempBtn == QMessageBox::Ok)

{

}

else if(tempBtn == QMessageBox::No)

{

}

else if(tempBtn == QMessageBox::Cancel)

{

}

五、使用QTabWidget多个子界面

第一种方式:

1、在主界面添加一个QTabWidget控件

2、添加两个QWidget的子界面,新建Qt设计师那个,带ui那种,如:

TcpServer、TcpClient

3、在工程头文件中声明两个子界面的指针变量

TcpServer *tcpServer;

TcpClient *tcpClient;

4、在工程cpp中new出界面对象

this->tcpServer = new TcpServer();

this->tcpClient = new TcpClient();

5、添加子界面

ui->tabWidget->addTab(this->tcpServer,"Tcp&Server");

ui->tabWidget->addTab(this->tcpClient,"Tcp&Client");

第二种:

直接在在tab里面拖控件(卧槽,才晓得可以这样)

ps:改变tab子名称

在ui中有个currentTabText,修改即可

 六、使用QColorDialog选取颜色

此类在设计师中没有存在其控件,需要自己用代码实现。此类提供一个静态方法getColor()来获取颜色

QColor color = QColorDialog::getColor(Qt::white,this);//第一个参数是打开是默认显示的参数,后面是其父类

 七、QLineEdit

1、设置颜色

QPalette palette;

QColor myColor(255,0,0);

palette.setColor(QPalette::Text,myColor);

ui->lineEdit->setPalette(palette);

2、设置提示输入

ui->lineEdit->setPlaceholderText("输入密码");

3、设置输入密码模式

ui里设置echoMode为password

4、设置字符串右对齐

ui->lineEdit->setAlignment(Qt::AlignRight);

八、QTableWidget

1、属性设置

ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);//选中一行

ui->tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);//可多选

ui->tableWidget->horizontalHeader()->setStyleSheet("QHeaderView::section{background:skyblue;}"); //设置表头背景色

ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//设置只读

ui->tableWidget->setContextMenuPolicy(Qt::CustomContextMenu);//鼠标右键发出customContextMenuRequested信号

ui->tableWidget->verticalHeader()->setVisible(false); //隐藏行表头

ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//占满

2、增加行、列

ui->tableWidget->insertRow(ui->tableWidget->rowCount());//这是在最后面增加一行,在当前增加一行是使用currentRow

ui->tablelWidget->insertColumn(ui->tableWidget->columnCount());//在最后面增加一列,在当前增加一列是使用currentColumn

int rowCount = ui.tableWidget->rowCount() - 1;//获取总的行号

ui.tableWidget->setItem(rowCount, 0, new QTableWidgetItem(QString(内容)));//设置新增行的0列内容
ui.tableWidget->setItem(rowCount, 1, new QTableWidgetItem(QString(内容)));//设置新增行的1列内容

3、为增加行、列设置内容

ui->tableWidget->setItem(行号,列号,new QTableWidgetItem(QString(内容)));

4、删除行、列

ui->tableWidget->removeRow(行号);

ui->tableWidget->removeColumn(列号);

5、界面适应数据

ui->tableWidget->resizeRowsToContents();//界面适应数据

ui->tableWidget->resizeColumnsToContents();

6、显示最后 一行

ui->tableWidget->scrollToBottom();

7、获取数据

用tableWidget::item::text;

8、判断某一格子是否为空

NULL==ui->tableWidget->item(i,j)//item可能是空指针,所以不能item.text

9、删除所有行

ui.tableWidget->clearContents();
ui.tableWidget->setRowCount(0);

10、窗口固定大小,可以设置最后一览固定大小,那最后一列后边总有空白,如果要让每行内容充满整个表格,需要设置head属性:

ui.tableWidget->horizontalHeader()->setStretchLastSection(true);

11、设置文字区中

ui->tableWidget->item(i, j)->setTextAlignment(Qt::AlignCenter);//感觉效率不高

12、动态为tablewidget添加窗口

①、新建ui类Test

②、在main里new出ui对象test

③、ui->tabWidget->setCurrentIndex(ui->tabWidget->addTab(test, "test界面"));//addTab返回新增加的界面index

13、设置tablewidget可关闭

在设计师里:

ps:这里的关闭相当于是隐藏,并不会回收内存,上面的数据依旧在跑

14、右键双击清空

①、在初始化中

ui.tableWidget->setContextMenuPolicy(Qt::CustomContextMenu);//使能鼠标右键

②、在初始化中连接鼠标右键双击信号槽

QObject::connect(ui.tableWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(tableWidgetContextSlot(QPoint)));//tablewidget鼠标右键

③、在槽函数中

if (0)//免得有警告
{
qDebug() << pos.rx();
}
ui.tableWidget->clearContents();
ui.tableWidget->setRowCount(0);

15、插入checkBox

1、插入
QTableWidgetItem *check = new QTableWidgetItem;
check->setCheckState(Qt::Unchecked);
ui.tableWidget->setItem(0, , check);
2、使用

 if (ui.tableWidget->item(0, 0)->checkState() == Qt::Checked)
 {
    。。。
 }

16、设置相邻两行颜色交替

ui.tableWidget->setAlternatingRowColors(true);
ui.tableWidget->setStyleSheet("border 0px;color:#6b6d7b;alternate-background-color:red;background:white;");

ps:给这个tablewidget设置了背景色之后,取出里面的控件,无法获取其控件颜色

17、添加选取颜色的按钮

①、封装QPushButton子类:https://www.cnblogs.com/judes/p/9592637.html

②、添加按钮控件

MyQPushButton* btn = new MyQPushButton(this);//颜色
btn->setColor();//设置随机颜色
ui.tableWidget->setCellWidget(i, , btn); //MyQPushButton是QPushButton子类

③、获取控件

((MyQPushButton*)ui.tableWidget->cellWidget(i, 4))->palette().color(QPalette::Button);//一定要转化为指针,否则得不到此控件

18、设置最后一列占满

tablewidget->horizontalHeader()->setStretchLastSection(true);

19、选中不要虚线

在QSS中:

QTableWidget{
outline:0px;
}

20、自定义控件居中显示

设置:

WarnLabel* label = new WarnLabel(ui->tableWidget);//状态,设置大小居中
label->setMinimumSize(,);
label->setMaximumSize(,);
label->setObjectName("state");
QWidget* widget = new QWidget(ui->tableWidget);
QVBoxLayout *v = new QVBoxLayout;
v->addWidget(label);
v->setAlignment(label,Qt::AlignCenter);
v->setSpacing();
v->setMargin();
widget->setLayout(v);
ui->tableWidget->setCellWidget(rowCount, , widget);

获取:

ui->tableWidget->cellWidget(rowCount, )->findChild<WarnLabel*>("state")->changeColor((Label_Color)query.value("state").toInt());

九、QTreeWidget

QTreewidget分两种内容,一是顶层节点,二是子节点

1、设置显示label

ui->treeWidget->setHeaderLabel("设备总览");

2、设置图标

ui->treeWidget->setIcon(0,QIcon);

3、设置顶层节点

QTreeWidgetItem *tempTopItemPc = new QTreeWidgetItem(QStringList()<<"电脑类");

tempTopItemPc->setCheckState(0,Qt::Unchecked);//是否有勾选复选框

4、为顶层节点设置子节点

QTreeWidgetItem *tempSubItem = new QTreeWidgetItem(QStringList()<<"PC001");

tempTopItemPc->addChild(tempSubItem);

5、把顶层节点放在tree中

ui->treeWidget->addTopLevelItem(tempTopItemPc);

6、其他

ui->treeWidget->setDragEnabled(true);//可以拖曳

ui->treeWidget->setAcceptDrops(true);//允许item接受拖曳过来的item

ui->treeWidget->setRootIsDecorated(false);//顶层节点不要装饰,即顶层节点不能收缩

ui->treeWidget->expandAll(); //结点全部展开

7、遍历所有item,如果item是想要的项则选中

QTreeWidgetItemIterator it(ui->treeWidget);
while (*it)
{
  if ((*it)->text(0) == tabBarStr)
  {
    (*it)->setSelected(true);
  }
  else
  {
    (*it)->setSelected(false);
  }
  ++it;
}

8、遍历所有item,把具备查询条件的所有项删除

// 查找 与轨检完全一致的项,并返回。
QList<QTreeWidgetItem*> s = ui->treeWidget->findItems(QStringLiteral("轨检"), Qt::MatchFlag::MatchExactly);
for (auto item : s)
{
delete item;
}

好像ui->treeWidget->takeTopLevelItem(5);也可以

9、把根节点的三角形去掉

10、在项中插入其他控件

void QTreeWidget::setItemWidget(QTreeWidgetItem * item, int column, QWidget * widget)

11、通过样式表设置三角形为自定义图片

ui->treeWidget->setStyleSheet("QTreeView::branch:has-children:!has-siblings:closed,\
QTreeView::branch:closed:has-children:has-siblings{border-image: none; image: url(:/new/prefix1/right.png);}\
QTreeView::branch:open:has-children:!has-siblings,\
QTreeView::branch:open:has-children:has-siblings{border-image: none; image: url(:/new/prefix1/bottom.png);}");

加粗为自己的图片

12、Qlabel

1、设置居中显示

在设计师里,找到alignment的“水平的”属性,改为居中

13、QSlider

常用信号

十、QLable

1、加颜色

QPalette p;
p.setColor(QPalette::WindowText,Qt::red);
ui->label->setPalette(p);

十一、QLineEdit

1、设置密码登录

ui->lineEdit->setEchoMode(QLineEdit::Normal);//设置输入时正常显示输入文字
ui->lineEdit_2->setEchoMode(QLineEdit::Password);//设置输入时不显示文字,显示特殊字符

2、设置提示

 ui->lineEdit->setPlaceholderText("请输入用户");//设置提醒文字,在输入时会自动消失

3、设置只能输入int

QLineEdit* le = new QLineEdit(log);
le->setMaximumWidth();
QIntValidator validator(, LONG_MAX, this );
le->setValidator(&validator);

QT控件学习的更多相关文章

  1. PyQt5Day03--程序基本结构之面向对象版本+控件学习

    1.程序基本结构之面向对象版本 (1)开发阶段(自己写好并测试)——设置为模版qto from PyQt5.Qt import * class Window(QWidget): def __init_ ...

  2. Cocos2dx 把 glview 渲染到 Qt 控件上(Mac 环境)

    本文原链接:http://www.cnblogs.com/zouzf/p/4423256.html 环境:Mac 10.9.2   Xcode5.1.1  Qt5.3  cocos2dx-2.2.4 ...

  3. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  4. DevExpress控件学习总结(转)

    DevExpress控件学习总结   1.Navigation & Layout 1.1 Bar Manager 如果想在窗体或用户控件(user control)上添加工具条(bars)或弹 ...

  5. Android Material Design控件学习(三)——使用TextInputLayout实现酷市场登录效果

    前言 前两次,我们学习了 Android Material Design控件学习(一)--TabLayout的用法 Android Material Design控件学习(二)--Navigation ...

  6. wxPython控件学习之wx.grid.Grid 表格控件

    wxPython控件学习之wx.grid.Grid (包括对GridCellEditor和GridCelRender的扩展,以支持更多的grid cell 样式, 以GridCellColorEdit ...

  7. 转)delphi chrome cef3 控件学习笔记 (二)

    (转)delphi chrome cef3 控件学习笔记 (二) https://blog.csdn.net/risesoft2012/article/details/51260832 原创 2016 ...

  8. GUI学习之四——QWidget控件学习总结

    上一章将的QObject是PyQt里所有控件的基类,并不属于可视化的控件.这一章所讲的QWidget,是所有可视化控件的基类. QWidget包含下面几点特性 a.控件是用户界面的最小的元素 b.每个 ...

  9. 一个显示 OpenCV Mat 图像的自定义 Qt 控件

    今天学习 Qt 的时候顺手写了一个,包含一个头文件 qcvdisplay.h 和一个源文件 qcvdisplay.cpp,因为这是 qt 默认的文件命名方式,在 Qt Designer 中提升控件时会 ...

随机推荐

  1. js 闭包与垃圾回收-待删

    关于闭包请看戳 串讲-解释篇:作用域,作用域链,执行环境,变量对象,活动对象,闭包,本篇写的不太好: 先摆定义: 函数对象,可以通过作用域链相互关联起来,函数体内部的变量都可以保存在函数作用域内,这种 ...

  2. vscode编辑器配置C语言编译运行环境

    1.安装C/C++插件 2.安装编译环境,这里选择MinGW(http://mingw.org/ ) 选择一个安装目录,如:E:\workspace\MinGW mingw32-gcc开头的(包括了m ...

  3. 浏览器加载不上css,样式走丢

    来自:http://www.cnblogs.com/crizygo/p/5466444.html 问题描述:使用eclipse修改样式文件,浏览器的页面一时显示一时不显示,最后直接没有加载最新的css ...

  4. Bootstrap CSS组组件架构的设计思想

    w AO模式 Append Overwrite 附加重写

  5. 简单JS旋转实现转盘抽奖效果

    闲来没事,做了一个模拟转盘抽奖的HTML&JS的效果: 可以在设置的时候,选择几个区域,并且可以填写指针将要停止的区域 比如,我选择了"区域2",结果就是这样 具体可以见下 ...

  6. python基础-第十篇-10.2CSS基础

    CSS是Cascading Style Sheet的简称,中文为层叠样式表 属性和属性值用冒号隔开,以分号结尾 引入方式 行内式--在标签的style属性中设定CSS样式 <body> & ...

  7. mac配置python自然语言处理环境

    一.nltk安装 Ⅰ.工具安装步骤 1.根据python版本从 https://pypi.python.org/pypi/setuptools 下载对应版本的setuptools.然后,在终端下运行, ...

  8. 机房断电导致MySQL同步1594错误

    1.错误信息 Last_IO_Error: Got fatal error from master when reading data from binary log: ' at 208645951. ...

  9. 新手怎么读懂一个中型的Django项目

    [前言]中型的项目是比较多的APP,肯会涉及多数据表的操作.如果有人带那就最好了,自己要先了解基本的django框架(MTV ,ORM等)师傅可以给讲解一下框架怎么组织url.py,model.py, ...

  10. Python多线程、多进程和协程的实例讲解

    线程.进程和协程是什么 线程.进程和协程的详细概念解释和原理剖析不是本文的重点,本文重点讲述在Python中怎样实际使用这三种东西 参考: 进程.线程.协程之概念理解 进程(Process)是计算机中 ...