QT中常用控键
1、TableWidget类
1.1、 表格属性设置
1.1.1设置行列属性
- //设置行列均分
- tableWidget->horizontalHeader()->setStretchLastSection(true); //就是这个地方
- tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
- //使行列头自适应宽度,最后一列将会填充空白部分
- table->horizontalHeader()->setStretchLastSection(true);
- //使行列头自适应宽度,所有列平均分来填充空白部分
- table->horizontalHeader()->setResizeMode(QHeaderView::Strtch);
- //使行自适应高度,假如行很多的话,行的高度不会一直减小,当达到一定值时会自动生成一个QScrollBar
- table->verticalHeader()->setResizeMode(QHeaderView::Strtch);
- //隐藏左边的序号
- QHeaderView* headerView = table的名字->verticalHeader();
- headerView->setHidden(true);
1.1.2设置单击Item选中行为
- //设置选择行为,以行为单位
- tableWidget->setSelectionBehavior ( QAbstractItemView::SelectRows);
- //设置选择模式,选择单行
- tableWidget->setSelectionMode ( QAbstractItemView::SingleSelection);
- //获取指定行数的某个数据:
- print(self.Order_table.item(del_row,0).text())
- //修改某行数据触发信号与槽函数
- self.Order_table.itemChanged.connect(self.itemChanged_Print)
1.1.3 表格行列操作
- //删除选中行
- int i = ui->tableWidget->currentRow();
- ui->tableWidget->removeRow(i);
- QTableWidget *table = new QTableWIdget(this);
- table->setColumnCount(5); //设置列数
- table->setRowCount(3); //设置行数/
- /*设置列名*/
- QStringList headers;
- headers<<"列名1"<<"列名2"<<"列名3";
- table->setHorizontalHeaderLabels(headers);
- /*给单元格添加内容*/
- void addItemContent(int row, int column, QString content)
- {
- QTableWidgetItem *item = new QTableWidgetItem (content);
- table->setItem(row, column, item);
- }
- /*给单元格中增加图标*/
- QTableWidgetItem *item = new QTableWidgetItem(QIcon("myImage.jpg"), NULL); //只加入图标,没有字符串
- QTableWidgetItem *item = new QTableWidgetItem(QIcon("myImage.jpg"), myString); //加入图标和字符串
- table->setItem(row, column, item);
- /*插入一行*/
- int row = table->rowCount();
- table->insertRow(row);
- /*插入一列*/
- int column = table->columnCount();
- table->insertColumn(column);
- int rowIndex = m_pAttrbuteList->rowCount();
- tableWidget->setRowCount(rowIndex + 1);//总行数增加1
- tableWidget->setRowHeight(rowIndex, 24);//设置行的高度
- print(self.Order_Table.rowCount())//获取列表最大行数
注:在不选择行的情况下发现每次点击后删除的都是第一行,i的输出都是0.
原因其实很简单,就是因为table的当前焦点在第一样的第一个单元格所导致的,解决的办法就是让table失去焦点,在构造函数里面添加ui->tableWidget->setFocusPolicy(Qt::NoFocus);
然后再试,发现点击删除按钮如果不选中行的话是不能删除的,返回的i此时是-1。
1.2 设置编辑属性
- //设置每行内容不可编辑
- table->setEditTriggers(QAbstractItemView::NoEditTriggers);
- /*参数设置:
- QTableWidget.NoEditTriggers 0 No editing possible. 不能对表格内容进行修改
- QTableWidget.CurrentChanged 1 Editing start whenever current item changes.任何时候都能对单元格修改
- QTableWidget.DoubleClicked 2 Editing starts when an item is double clicked.双击单元格
- QTableWidget.SelectedClicked 4 Editing starts when clicking on an already selected item.单击已选中的内容
- QTableWidget.EditKeyPressed 8 Editing starts when the platform edit key has been pressed over an item.
- QTableWidget.AnyKeyPressed 16 Editing starts when any key is pressed over an item.按下任意键就能修改
- QTableWidget.AllEditTriggers 31 Editing starts for all above actions.以上条件全包括*/
- //设置只能选择一行,不能选择多行
- table->setSelectionMode(QAbstractItemView::SingleSelection);
- /*去掉每行的行号*/
- QHeaderView *headerView = table->verticalHeader();
- headerView->setHidden(true);
- /*设置让某个单元格或某行选中*/
- table->setCurrentCell(row, column, QItemSelectionModel::Select);
- //选中一行:
- table->setCurrentCell(row, QItemSelectionModel::Select);//(注意此处的列没有值)
2、标准对话类
准输入对话框:
- ok2 = QInputDialog.getText(self,"Platelet type distribution ","Please enter the platelet type distribution")//第四个参数(设置输入框的显示):QLineEdit.Password
- if ok0:
- self.inputL = QLineEdit()
- self.inputL.setText(Item_row0)
- newItem = QTableWidgetItem(Item_row0)
- self.Order_table.setItem(0,0,newItem)
3、radiobutton控键类
- ischecked()//判断数据是否选中 QComboBox类
- currentText() //获取当前文本的值
4、QLable控键
- //加载图片
- png=QPixmap('D:/codeWorkSpace/Edgin_machine/1.jpg').scaled(self.Pic_Val.width(),self.Pic_Val.height())
- self.Pic_Val.setPixmap(png)
- //QLabel控件加载图片自适应变化
- self.Pic_Val.setScaledContents(True)
- self.Pic_Val.resize(self.Pic_Val.size())
- //设置窗口为固定大小
- Edit_Order_UI.setFixedSize(1200, 800)
5、QDateTimeEdit类
- //设置时间格式
- self.EndTime.setDisplayFormat("yyyy-MM-dd HH:mm:ss")
- //获取系统时间:(引入datetime模块)
- datetime.now()
6、QTesxtEdit类
- //按行追加数据:
- self.textEdit.append(str)
- //向当前行插入数据:
- self.textEdit.insertPlainText(arr.get(a))
7、QLineEdit类
- //禁止编辑:
- self.add_order.CQ_Edit.setEnabled(False)
- //设置输入范围
- self.W1_Edit.setValidator(QDoubleValidator(0.0, 4.0001, 4, self))
- self.TQ_Edit.setValidator(QIntValidator(0, 10000, self))
- //智能输入
- self.completer = QCompleter(ls)//ls为列表,需要提示的数据
- self.LineEdit.setCompleter(self.completer)
8、重写鼠标事件
8.1重写鼠标点击事件:
- def mousePressEvent(self, event):
8.2重写鼠标按下移动事件:
- def mouseMoveEvent(self, event):
8.3获取鼠标坐标点
- print event.pos()
- posx = event.pos().x()
- posy = event.pos().y()
9、信号与槽
9.1向槽函数传参
- self.Get_Point1_Button.clicked.connect(lambda :self.Draw_Point(5))
10、QPainter类的使用
10.1 建立画笔类
- self.p = QPainter(self.qpixmap) #指定绘制地方,被绘制对象一般为QPixmap类
- self.p.setPen(QPen(Qt.red, 2, Qt.SolidLine)) #设置画笔属性,参数1:绘制颜色,参数2:绘制像素大小,参数3:绘制类型
10.2 常用绘制形状
- self.p.setFont(QFont("Decorative", 15))#设置绘制字体大小
- self.p.drawText(QRect(self.point1[0]-9, self.point1[1]-22, 20, 20), Qt.AlignCenter, "1")#绘制文字
- self.p.drawEllipse(self.point1[0]-3, self.point1[1]-2, 8, 8)#绘制圆
注:如果要根据鼠标移动,时事绘制图像,结合鼠标按下事件使用,同时不断刷新QPixmap类,使用QPainter类,注意用p.end()结束,否则程序会报错。
11.页面布局
11.2按比例布局
1、要求:被布局的控件需要策略(sizePolicy)需要为:Expanding
2、在布局中设置布局比例,水平方向布局比例(layoutColumnStretch)设置,垂直方向布局比例(layoutRowStretch)设置.
12.消息提示框的使用
12.1消息框定义方式
- Qm=QMessageBox.information(self, u"提示", u"物料处理失败,重新拍摄图片?", QMessageBox.Yes|QMessageBox.No)
12.2单击提示框按钮触发事件
- if Qm==QMessageBox.Yes:
- self.frist_board_buttun.setText("重拍")
- self.frist_board_buttun.setEnabled(True)
- if Qm==QMessageBox.No:
- self.Send_News("give_up_ramake_image", None)
13.单击按钮打开指定文件夹
- self.filename = QFileDialog.getOpenFileName(self, "选择文件", "../Image/",
- "Image Files(*.jpg *.jpeg *.png *.bmp)")[0]
其他
1.UI界面预览
Alt+Shift+R
2.openCV图片格式转换成QT可用图片格式
- self.screen.image = cv2.cvtColor(self.screen.image, cv2.COLOR_BGR2RGB) #图片颜色处理
- qimage = QImage(self.screen.image.tostring(), self.screen.image.shape[1],
- self.screen.image.shape[0], self.screen.image.shape[1] * 3,QImage.Format_RGB888) #图片格式转换
- qpixmap = QPixmap(qimage)
3.qDebug()输出中文
- #pragma execution_character_set("utf-8")
QT中常用控键的更多相关文章
- Android中常用控件及属性
在之前的博客为大家带来了很多关于Android和jsp的介绍,本篇将为大家带来,关于Andriod中常用控件及属性的使用方法,目的方便大家遗忘时,及时复习参考.好了废话不多讲,现在开始我们本篇内容的介 ...
- Qt中常用知识点
1:QRegExp 正则表达式 QRegExp regExp("[a-zA-Z][1-9][0-9]{0,2}"); xxx->setValidator(new QRegEx ...
- WPF中常用控件(TreeView, ComboBox, DataGrid, ListView)使用MVVM模式绑定的demo
之前几篇关于TreeView的博客中只是贴了源代码,并没有把整个项目上传到github.最近就想着把我常用的几个控件做成一个demo,这样也方便自己以后查看.本人也是WPF新手,但是我并没有打算就往这 ...
- WPF中常用控件的属性
Source = new BitmapImage( new Uri( WangCaiConfig.GetCurrentDirectory() + imgStr, UriKind.RelativeOrA ...
- QT学习笔记2:QT中常用函数
一.QString转number QString number() QString number() QString number() QString number() QString number( ...
- Qt中常用的类
QApplication 应用程序类 管理图形用户界面应用程序的控制流和主要设置 QLabel 标签类 提供 ...
- QT中,控件显示不下,用...表示
void CommonHelper::setQLabelText(QLabel *label, const QString &text) { QFontMetrics cs(label-> ...
- QT中常用工具总结
1.qmake 利用.pro文件生成Makefile 命令为: eg: qmake -o Makefile hello.pro 2. uic 利用ui界面审查.h头文件 命令为: eg: uic go ...
- 第30课 Qt中的文本编辑组件
1. 3种常用的文本编辑组件的比较 单行文本支持 多行文本支持 自定义格式支持 富文本支持 QLineEdit (单行文本编辑组件) Yes No No No QPlainTextEdit (多行普通 ...
随机推荐
- 前端枚举enum的应用(Element)封装
什么是枚举Enum 枚举 Enum是在众多语言中都有的一种数据类型,JavaScript中还没有(TypeScript有).用来表示一些特定类别的常量数据,如性别.学历.方向.账户状态等,项目开发中是 ...
- Android RecyclerView使用ListAdapter高效刷新数据
原文:Android RecyclerView使用ListAdapter高效刷新数据 - Stars-One的杂货小窝 我们都知道,当RecyclerView数据源更新后,还需要通过adapter调用 ...
- 1.Django-Rest-Framework入门规范
一.WEB应用模式 1.前后端不分离 前后端混合开发(前后端不分离),返回的是html的内容,需要渲染页面,写模版 2.前后端分离 专注于后端接口,返回json.xml格式的数据 二.AP ...
- v-debounce-throttle是一个vue防抖节流指令
v-debounce-throttle是一个vue防抖节流指令 简介 v-debounce-throttle是一个vue防抖节流指令,控制单一事件的触发频率.其核心是拦截组件元素的v-on绑定事件,采 ...
- Redis系列8:Bitmap实现亿万级数据计算
Redis系列1:深刻理解高性能Redis的本质 Redis系列2:数据持久化提高可用性 Redis系列3:高可用之主从架构 Redis系列4:高可用之Sentinel(哨兵模式) Redis系列5: ...
- 10、数组a和b各有10个元素。将他们相同的位置元素逐个比较, 如果a中元素大于b中对应元素的次数多于b数组中元素大于a中元素的次数, 则认为a大于b。请统计大于等于小于的次数
/* 数组a和b各有10个元素.将他们相同的位置元素逐个比较, 如果a中元素大于b中对应元素的次数多于b数组中元素大于a中元素的次数, 则认为a大于b.请统计大于等于小于的次数 */ #include ...
- 靶机练习: Hacker_Kid-v1.0.1
靶机: Hacker_Kid-v1.0.1 准备工作 靶机地址: https://download.vulnhub.com/hackerkid/Hacker_Kid-v1.0.1.ova MD5 校验 ...
- 【DL论文精读笔记】Object Detection in 20 Y ears: A Survey目标检测综述
目标检测20年综述(2019) 摘要 Abstract 该综述涵盖了400篇目标检测文章,时间跨度将近四分之一世纪.包括目标检测历史上的里程碑检测器.数据集.衡量指标.基本搭建模块.加速技术,最近的s ...
- 大前端html基础学习02
CSS核心属性 一.css属性和属性值的定义 属性:属性是指定选择符所具有的属性,它是css的核心. 属性值:属性值包括法定属性值及常见的数值加单位,如25px,或颜色值等. 二.CSS文本属性 1. ...
- C++期末考试题库
哈尔滨商业大学计算机专业C++期末考试题库 下载:题库 示例: 一.单选题:1.能作为 C ++程序的基本单位是( C )A .字符 B .语句 C .函数 D .源程序文件2.程序中主函数的名字为( ...