1、TableWidget类

1.1、 表格属性设置

1.1.1设置行列属性

  1. //设置行列均分
  2. tableWidget->horizontalHeader()->setStretchLastSection(true); //就是这个地方
  3. tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
  4. //使行列头自适应宽度,最后一列将会填充空白部分
  5. table->horizontalHeader()->setStretchLastSection(true);
  6.  
  7. //使行列头自适应宽度,所有列平均分来填充空白部分
  8. table->horizontalHeader()->setResizeMode(QHeaderView::Strtch);
  9.  
  10. //使行自适应高度,假如行很多的话,行的高度不会一直减小,当达到一定值时会自动生成一个QScrollBar
  11. table->verticalHeader()->setResizeMode(QHeaderView::Strtch);
  12.  
  13. //隐藏左边的序号
  14. QHeaderView* headerView = table的名字->verticalHeader();
  15. headerView->setHidden(true);

1.1.2设置单击Item选中行为

  1. //设置选择行为,以行为单位
  2. tableWidget->setSelectionBehavior ( QAbstractItemView::SelectRows);
  3.  
  4. //设置选择模式,选择单行
  5. tableWidget->setSelectionMode ( QAbstractItemView::SingleSelection);
  6.  
  7. //获取指定行数的某个数据:
  8. print(self.Order_table.item(del_row,0).text())
  9.  
  10. //修改某行数据触发信号与槽函数
  11. self.Order_table.itemChanged.connect(self.itemChanged_Print)

1.1.3  表格行列操作

  1. //删除选中行
  2. int i = ui->tableWidget->currentRow();
  3. ui->tableWidget->removeRow(i);
  4. QTableWidget *table = new QTableWIdget(this);
  5. table->setColumnCount(5); //设置列数
  6. table->setRowCount(3); //设置行数/
  7.  
  8. /*设置列名*/
  9. QStringList headers;
  10. headers<<"列名1"<<"列名2"<<"列名3";
  11. table->setHorizontalHeaderLabels(headers);
  12.  
  13. /*给单元格添加内容*/
  14. void addItemContent(int row, int column, QString content)
  15. {
  16. QTableWidgetItem *item = new QTableWidgetItem (content);
  17. table->setItem(row, column, item);
  18. }
  19.  
  20. /*给单元格中增加图标*/
  21. QTableWidgetItem *item = new QTableWidgetItem(QIcon("myImage.jpg"), NULL); //只加入图标,没有字符串
  22. QTableWidgetItem *item = new QTableWidgetItem(QIcon("myImage.jpg"), myString); //加入图标和字符串
  23. table->setItem(row, column, item);
  24.  
  25. /*插入一行*/
  26. int row = table->rowCount();
  27. table->insertRow(row);
  28.  
  29. /*插入一列*/
  30. int column = table->columnCount();
  31. table->insertColumn(column);
  32.  
  33. int rowIndex = m_pAttrbuteList->rowCount();
  34. tableWidget->setRowCount(rowIndex + 1);//总行数增加1
  35. tableWidget->setRowHeight(rowIndex, 24);//设置行的高度
  36. print(self.Order_Table.rowCount())//获取列表最大行数

注:在不选择行的情况下发现每次点击后删除的都是第一行,i的输出都是0.
原因其实很简单,就是因为table的当前焦点在第一样的第一个单元格所导致的,解决的办法就是让table失去焦点,在构造函数里面添加ui->tableWidget->setFocusPolicy(Qt::NoFocus);
然后再试,发现点击删除按钮如果不选中行的话是不能删除的,返回的i此时是-1。

1.2 设置编辑属性

  1. //设置每行内容不可编辑
  2. table->setEditTriggers(QAbstractItemView::NoEditTriggers);
  3. /*参数设置:
  4. QTableWidget.NoEditTriggers 0 No editing possible. 不能对表格内容进行修改
  5. QTableWidget.CurrentChanged 1 Editing start whenever current item changes.任何时候都能对单元格修改
  6. QTableWidget.DoubleClicked 2 Editing starts when an item is double clicked.双击单元格
  7. QTableWidget.SelectedClicked 4 Editing starts when clicking on an already selected item.单击已选中的内容
  8. QTableWidget.EditKeyPressed 8 Editing starts when the platform edit key has been pressed over an item.
  9. QTableWidget.AnyKeyPressed 16 Editing starts when any key is pressed over an item.按下任意键就能修改
  10. QTableWidget.AllEditTriggers 31 Editing starts for all above actions.以上条件全包括*/
  11.  
  12. //设置只能选择一行,不能选择多行
  13. table->setSelectionMode(QAbstractItemView::SingleSelection);
  14.  
  15. /*去掉每行的行号*/
  16. QHeaderView *headerView = table->verticalHeader();
  17. headerView->setHidden(true);
  18.  
  19. /*设置让某个单元格或某行选中*/
  20. table->setCurrentCell(row, column, QItemSelectionModel::Select);
  21. //选中一行:
  22. table->setCurrentCell(row, QItemSelectionModel::Select);//(注意此处的列没有值)

2、标准对话类

准输入对话框:

  1. ok2 = QInputDialog.getText(self,"Platelet type distribution ","Please enter the platelet type distribution")//第四个参数(设置输入框的显示):QLineEdit.Password
  2. if ok0:
  3. self.inputL = QLineEdit()
  4. self.inputL.setText(Item_row0)
  5. newItem = QTableWidgetItem(Item_row0)
  6. self.Order_table.setItem(0,0,newItem)

3、radiobutton控键类

  1. ischecked()//判断数据是否选中 QComboBox类
  2. currentText() //获取当前文本的值

4、QLable控键

  1. //加载图片
  2. png=QPixmap('D:/codeWorkSpace/Edgin_machine/1.jpg').scaled(self.Pic_Val.width(),self.Pic_Val.height())
  3. self.Pic_Val.setPixmap(png)
  4.  
  5. //QLabel控件加载图片自适应变化
  6. self.Pic_Val.setScaledContents(True)
  7. self.Pic_Val.resize(self.Pic_Val.size())

  8. //设置窗口为固定大小
  9. Edit_Order_UI.setFixedSize(1200, 800)

5、QDateTimeEdit类

  1. //设置时间格式
  2. self.EndTime.setDisplayFormat("yyyy-MM-dd HH:mm:ss")
  3.  
  4. //获取系统时间:(引入datetime模块)
  5. datetime.now()


6、QTesxtEdit类

  1. //按行追加数据:
  2. self.textEdit.append(str)
  3.  
  4. //向当前行插入数据:
  5. self.textEdit.insertPlainText(arr.get(a))

7、QLineEdit类

  1. //禁止编辑:
  2. self.add_order.CQ_Edit.setEnabled(False)
  3. //设置输入范围
  4. self.W1_Edit.setValidator(QDoubleValidator(0.0, 4.0001, 4, self))
  5. self.TQ_Edit.setValidator(QIntValidator(0, 10000, self))
  6. //智能输入
  7.  
  8. self.completer = QCompleter(ls)//ls为列表,需要提示的数据
  9. self.LineEdit.setCompleter(self.completer)

8、重写鼠标事件

8.1重写鼠标点击事件:

  1. def mousePressEvent(self, event):

8.2重写鼠标按下移动事件:

  1. def mouseMoveEvent(self, event):

8.3获取鼠标坐标点

  1. print event.pos()
  2. posx = event.pos().x()
  3. posy = event.pos().y()

9、信号与槽

9.1向槽函数传参

  1. self.Get_Point1_Button.clicked.connect(lambda :self.Draw_Point(5))

10、QPainter类的使用

10.1 建立画笔类

  1. self.p = QPainter(self.qpixmap) #指定绘制地方,被绘制对象一般为QPixmap类
  2. self.p.setPen(QPen(Qt.red, 2, Qt.SolidLine)) #设置画笔属性,参数1:绘制颜色,参数2:绘制像素大小,参数3:绘制类型

10.2 常用绘制形状

  1. self.p.setFont(QFont("Decorative", 15))#设置绘制字体大小
  2. self.p.drawText(QRect(self.point1[0]-9, self.point1[1]-22, 20, 20), Qt.AlignCenter, "1")#绘制文字
  3.  
  4. 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消息框定义方式

  1. Qm=QMessageBox.information(self, u"提示", u"物料处理失败,重新拍摄图片?", QMessageBox.Yes|QMessageBox.No)

12.2单击提示框按钮触发事件

  1. if Qm==QMessageBox.Yes:
  2. self.frist_board_buttun.setText("重拍")
  3. self.frist_board_buttun.setEnabled(True)
  4. if Qm==QMessageBox.No:
  5. self.Send_News("give_up_ramake_image", None)

13.单击按钮打开指定文件夹

  1. self.filename = QFileDialog.getOpenFileName(self, "选择文件", "../Image/",
  2. "Image Files(*.jpg *.jpeg *.png *.bmp)")[0]

其他

1.UI界面预览

Alt+Shift+R

2.openCV图片格式转换成QT可用图片格式

  1. self.screen.image = cv2.cvtColor(self.screen.image, cv2.COLOR_BGR2RGB) #图片颜色处理
  2. qimage = QImage(self.screen.image.tostring(), self.screen.image.shape[1],
  3. self.screen.image.shape[0], self.screen.image.shape[1] * 3,QImage.Format_RGB888) #图片格式转换
  4. qpixmap = QPixmap(qimage)

 3.qDebug()输出中文

  1. #pragma execution_character_set("utf-8")

QT中常用控键的更多相关文章

  1. Android中常用控件及属性

    在之前的博客为大家带来了很多关于Android和jsp的介绍,本篇将为大家带来,关于Andriod中常用控件及属性的使用方法,目的方便大家遗忘时,及时复习参考.好了废话不多讲,现在开始我们本篇内容的介 ...

  2. Qt中常用知识点

    1:QRegExp 正则表达式 QRegExp regExp("[a-zA-Z][1-9][0-9]{0,2}"); xxx->setValidator(new QRegEx ...

  3. WPF中常用控件(TreeView, ComboBox, DataGrid, ListView)使用MVVM模式绑定的demo

    之前几篇关于TreeView的博客中只是贴了源代码,并没有把整个项目上传到github.最近就想着把我常用的几个控件做成一个demo,这样也方便自己以后查看.本人也是WPF新手,但是我并没有打算就往这 ...

  4. WPF中常用控件的属性

    Source = new BitmapImage( new Uri( WangCaiConfig.GetCurrentDirectory() + imgStr, UriKind.RelativeOrA ...

  5. QT学习笔记2:QT中常用函数

    一.QString转number QString number() QString number() QString number() QString number() QString number( ...

  6. Qt中常用的类

    QApplication 应用程序类                管理图形用户界面应用程序的控制流和主要设置 QLabel 标签类                                提供 ...

  7. QT中,控件显示不下,用...表示

    void CommonHelper::setQLabelText(QLabel *label, const QString &text) { QFontMetrics cs(label-> ...

  8. QT中常用工具总结

    1.qmake 利用.pro文件生成Makefile 命令为: eg: qmake -o Makefile hello.pro 2. uic 利用ui界面审查.h头文件 命令为: eg: uic go ...

  9. 第30课 Qt中的文本编辑组件

    1. 3种常用的文本编辑组件的比较 单行文本支持 多行文本支持 自定义格式支持 富文本支持 QLineEdit (单行文本编辑组件) Yes No No No QPlainTextEdit (多行普通 ...

随机推荐

  1. 前端枚举enum的应用(Element)封装

    什么是枚举Enum 枚举 Enum是在众多语言中都有的一种数据类型,JavaScript中还没有(TypeScript有).用来表示一些特定类别的常量数据,如性别.学历.方向.账户状态等,项目开发中是 ...

  2. Android RecyclerView使用ListAdapter高效刷新数据

    原文:Android RecyclerView使用ListAdapter高效刷新数据 - Stars-One的杂货小窝 我们都知道,当RecyclerView数据源更新后,还需要通过adapter调用 ...

  3. 1.Django-Rest-Framework入门规范

    一.WEB应用模式   1.前后端不分离 前后端混合开发(前后端不分离),返回的是html的内容,需要渲染页面,写模版 2.前后端分离 专注于后端接口,返回json.xml格式的数据     二.AP ...

  4. v-debounce-throttle是一个vue防抖节流指令

    v-debounce-throttle是一个vue防抖节流指令 简介 v-debounce-throttle是一个vue防抖节流指令,控制单一事件的触发频率.其核心是拦截组件元素的v-on绑定事件,采 ...

  5. Redis系列8:Bitmap实现亿万级数据计算

    Redis系列1:深刻理解高性能Redis的本质 Redis系列2:数据持久化提高可用性 Redis系列3:高可用之主从架构 Redis系列4:高可用之Sentinel(哨兵模式) Redis系列5: ...

  6. 10、数组a和b各有10个元素。将他们相同的位置元素逐个比较, 如果a中元素大于b中对应元素的次数多于b数组中元素大于a中元素的次数, 则认为a大于b。请统计大于等于小于的次数

    /* 数组a和b各有10个元素.将他们相同的位置元素逐个比较, 如果a中元素大于b中对应元素的次数多于b数组中元素大于a中元素的次数, 则认为a大于b.请统计大于等于小于的次数 */ #include ...

  7. 靶机练习: Hacker_Kid-v1.0.1

    靶机: Hacker_Kid-v1.0.1 准备工作 靶机地址: https://download.vulnhub.com/hackerkid/Hacker_Kid-v1.0.1.ova MD5 校验 ...

  8. 【DL论文精读笔记】Object Detection in 20 Y ears: A Survey目标检测综述

    目标检测20年综述(2019) 摘要 Abstract 该综述涵盖了400篇目标检测文章,时间跨度将近四分之一世纪.包括目标检测历史上的里程碑检测器.数据集.衡量指标.基本搭建模块.加速技术,最近的s ...

  9. 大前端html基础学习02

    CSS核心属性 一.css属性和属性值的定义 属性:属性是指定选择符所具有的属性,它是css的核心. 属性值:属性值包括法定属性值及常见的数值加单位,如25px,或颜色值等. 二.CSS文本属性 1. ...

  10. C++期末考试题库

    哈尔滨商业大学计算机专业C++期末考试题库 下载:题库 示例: 一.单选题:1.能作为 C ++程序的基本单位是( C )A .字符 B .语句 C .函数 D .源程序文件2.程序中主函数的名字为( ...