一、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 中的变量声明提前总结

    一.var 声明 ES6之前,js 中声明变量基本上用 var 关键字: 1.如果访问未声明的变量,会报错:ReferenceError 2.声明了未赋值,值为 undefined,跟前面的报错是两回 ...

  2. 160308、java排序(形如1.1、1.2.1)

    package com.rick.sample;   import java.util.ArrayList; import java.util.Collections; import java.uti ...

  3. 防止Form中嵌入WebBrowser出错导致程序崩溃

     siow(1253366)  10:11:13两种方法你用的自带的webbrowser还是embeded那个毛小毛(3335076)  10:12:15或者有什么办法拦截到是webbrowser,如 ...

  4. sublimeText前端必备插件

    安装完成后的sublime text,功能单纯地就像笔记本,然而,可以下载对应的插件,使得sublime text不仅仅局限于某一单一语言的编写,此处只提及到前端方面的使用,下面是前端一般使用到的插件 ...

  5. java面试基础题------》Java 中的final关键字有哪些用法

    (1)修饰类:表示该类不能被继承: (2)修饰方法:表示方法不能被重写: (3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量).

  6. URI 、URL 和 URN

    URI URI 是 Uniform Resource Identifier 的缩写. Uniform 统一不同类型的资源.比如 txt.mp3.jpeg 等不同的类型的资源都可以使用 URI 来标识 ...

  7. Quick UDP Internet Connections 让互联网更快的协议,QUIC在腾讯的实践及性能优化

    https://mp.weixin.qq.com/s/44ysXnVBUq_nJByMyX9n5A 让互联网更快:通往QUIC之路 原创: 史天 翻译 云技术实践 8月15日 QUIC(Quick U ...

  8. [报错]编译报错:clang: error: linker command failed with exit code 1及duplicate symbol xxxx in错误解决方法之一

    今天添加了一个新类(包括m,h,xib文件),还没有调用,—编译遇到如下错误,根据错误提示, duplicate symbol param1 in: /Users/xxxx/Library/Devel ...

  9. TuShare获取K线数据

    Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据存储的过程,能够为金融分析人员提供快速.整洁.和多样的便于分析的数据,为他们在数据获取 ...

  10. ubuntu开机自动加载iptables配置(转)

    原文:http://www.xuebuyuan.com/730127.html iptables的使用参见http://wiki.ubuntu.org.cn/IptablesHowTo iptable ...