qt中buttons()与button()的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt中buttons()与button()的区别相关的知识,希望对你有一定的参考价值。
有好几个类中有buttons()和button(),不知道你指的是不是鼠标事件Qt::MouseButton QMouseEvent::button () const
返回产生事件的按钮,鼠标move事件总是返回 Qt::NoButton
Qt::MouseButtons QMouseEvent::buttons () const
返回产生事件的按钮状态。 按钮状态是Qt::LeftButton, Qt::RightButton, Qt::MidButton的或运算组合。对于鼠标move事件,函数返回当前按下的所有按钮。对于鼠标按下或双击事件,返回导致事件发生的按钮。对于鼠标释放事件,不包含导致事件发生的按钮。追问
就是对事件不是很了解,在click事件中用的是button(),在move事件中用的是buttons(),不能通用吗
追答假设你的鼠标左键已经按下。
如果移动鼠标,会发生的move事件,button返回Qt::NoButton,buttons返回LeftButton。
再按下了右键,会发生press事件,button返回RightButton,buttons返回LeftButton|RightButton
再移动鼠标,会发生move事件,button返回Qt::NoButton,buttons返回LeftButton|RightButton
再松开左键,会发生Release事件,button返回LeftButton,buttons返回RightButton
也就是说,button返回“那个按钮发生了此事件”,buttons返回"发生事件时哪些按钮还处于按下状态"
Qt::MouseButton QMouseEvent::button () const
返回产生事件的按钮;
Qt::MouseButtons QMouseEvent::buttons () const
返回产生事件的按钮状态;
前者是鼠标move事件总是返回 Qt::NoButton,后者函数返回当前按下的所有按钮。 参考技术B The QToolButton class provides a quick-access button to commands or options, usually used inside a QToolBar.
A
tool button is a special button that provides quick-access to specific
commands or options. As opposed to a normal command button, a tool
button usually doesn't show a text label, but shows an icon instead.追问
Qt::MouseButton QMouseEvent::button()和Qt::MouseButtons QMouseEvent::buttons ()
Python QT5 3- 基本操作 - 2.按钮 Button
2. 按钮 Button
>> Buttons包括 6 类
- Push Button(按钮)
- Tool Button(工具按钮)-- 图标显示,可以定义popupmenu和toolbuttonstyle(实战未使用)
- Radio Button(单选框)-- 单选框
- Check Box(复选框)-- 复选框
- Command Link Button(命令链接)-- 导航按钮(实战未使用)
- Dialog Button Box(对话框按钮)-- 系统快速按钮部署(实战未使用)
>> 基本属性
属性 | 说明 | |
Qobject | objectName | 按钮对像引用名 |
Qwidget | enabled | 是否可操作(置灰) |
geometry | 显示形状 | |
sizePolicy | 尺寸水平 垂直伸展策略 | |
minimumSize | 最小尺寸 | |
maximumSize | 最大尺寸 | |
sizeIncement | UI变化时尺寸变化 | |
baseSize | 基本尺寸,默认0 | |
palette | 姿色设置 | |
font | 设置字体 | |
cursor | 鼠标形状 | |
mouseTracking | 响应鼠标移动事件 | |
tabletTracking | 平板? | |
focusPolicy | 对像获取焦点选项 | |
contextMenuPolicy | 上下文菜单? | |
acceptDrops | 平板? | |
toolTip | tip提示设置 | |
toolTipDuration | tip显示时间 | |
statusTip | 状态栏tip显示 | |
whatsThis | help文本显示? | |
accesibleName | 特殊人群使用 | |
accesibleDescription | 特殊人群使用 | |
layoutDirection | 布局方向 | |
autoFillBackground | 对像是否填充背景区域 | |
styleSheet | 样式设置 | |
locale | 语言,国家 地区 | |
inputMethodHints | 输入法设置 | |
QAbstractButton | text | 设置文本显示,字符前加 & 表示快捷键 alt + |
icon | 设置图标 | |
iconSize | 图标大小 | |
shortcut | 设置多字符快捷键 | |
checkable | 是否可以被选中,true时每次点击转换check 和 uncheck状态 | |
checked | 是否被选中 | |
autoRepeat | 是否重复点击,与autorepetdelay,autorepeatinterval组合使用 | |
QPushButton | autoDefault | |
default | ||
flat | 是否显示边框 |
>> 声明
self.pbopenfile = QtWidgets.QPushButton(self.frame) #define push button
self.pbopenfile.setMinimumSize(QtCore.QSize(0, 30)) #size
self.pbopenfile.setObjectName("pbopenfile") #button name
self.verticalLayout.addWidget(self.pbopenfile) #layout
self.pbopenfile.setToolTip("Open File...") #tooltip
self.pbopenfile.clicked.connect(self.openfile) #click event
##################
self.pbopenfile.setText(_translate("MainWindow", "Open File")) #show text
>> 事件响应
self.pbopenfile.clicked.connect(self.openfile) #click event
##set content container
self.twshowfile = QTreeWidget(self.frame_2) #tree view
self.teshowfile = QtWidgets.QTextEdit(self.frame_2) #test edit
##################################
def openfile(self):
## 响应按钮并弹出提示框 QMessageBox
# msg = QMessageBox.information(None, 'Info', 'Information',QMessageBox.Ok|QMessageBox.Cancel|QMessageBox.Yes|QMessageBox.No|QMessageBox.Abort|QMessageBox.Retry|QMessageBox.Ignore,QMessageBox.No)
#
# if msg == QMessageBox.Yes:
# print("Yes")
# elif msg == QMessageBox.No:
# print("No")
## 打开文件 OpenFileDialog
# QFileDialog.getOpenFileName(None, 'Open file', './')
fileName, filetype = QFileDialog.getOpenFileName(None,"Select File","./","Text Files (*.txt;*.jpg)") # 设置文件扩展名过滤,双分号间隔
## 获取打开文件名
self.leopenfile.setText(fileName)
# path = QtCore.QStringListModel()
# pathlist = []
## 设置文件显示容器
self.twshowfile.setColumnCount(1)
root = QTreeWidgetItem(self.twshowfile)
## 打开文件并显示在容器中
with open(fileName,"r",encoding="utf-8") as fp:
fprl = fp.readlines()
fprl.reverse()
for f in fprl:
tf = f
f = f.replace('\\r',"").replace('\\t',"").replace('\\n',"")
self.teshowfile.append(f)
# pathlist.append(f)
if fprl.index(tf) == 0:
self.teshowfile.append(">>>>>>>>>>>>>>>>>>>>>>>>>>")
self.twshowfile.setHeaderLabels([f])
root.setText(0,">>>>>>>>>>>>>>>>>>>>>>>>>>")
else:
qitem = QTreeWidgetItem()
qitem.setText(0,f)
root.addChild(qitem)
self.twshowfile.expandAll()
self.teshowfile.moveCursor(QTextCursor.Start)
self.teshowfile.setFocus()
参考:第15.14节 PyQt(Python+Qt)入门学习:Designer的Buttons按钮详解_mb5fd86853067b7的技术博客_51CTO博客
开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系以上是关于qt中buttons()与button()的区别的主要内容,如果未能解决你的问题,请参考以下文章
Python QT5 3- 基本操作 - 2.按钮 Button