Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
k54kdk
PyQt Fluent Widgets
提交
f291068e
P
PyQt Fluent Widgets
项目概览
k54kdk
/
PyQt Fluent Widgets
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PyQt Fluent Widgets
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
f291068e
编写于
7月 14, 2023
作者:
之一Yo
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修复右击表格和列表组件无法选中对应行的问题 (#356)
上级
38c09357
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
67 addition
and
12 deletion
+67
-12
examples/list_view/demo.py
examples/list_view/demo.py
+2
-0
examples/table_view/demo.py
examples/table_view/demo.py
+3
-0
qfluentwidgets/components/widgets/list_view.py
qfluentwidgets/components/widgets/list_view.py
+32
-7
qfluentwidgets/components/widgets/table_view.py
qfluentwidgets/components/widgets/table_view.py
+30
-5
未找到文件。
examples/list_view/demo.py
浏览文件 @
f291068e
...
@@ -20,6 +20,8 @@ class Demo(QWidget):
...
@@ -20,6 +20,8 @@ class Demo(QWidget):
# self.listWidget.setAlternatingRowColors(True)
# self.listWidget.setAlternatingRowColors(True)
# self.listWidget.setSelectRightClickedRow(True)
stands
=
[
stands
=
[
'白金之星'
,
'绿色法皇'
,
"天堂制造"
,
"绯红之王"
,
'白金之星'
,
'绿色法皇'
,
"天堂制造"
,
"绯红之王"
,
'银色战车'
,
'疯狂钻石'
,
"壮烈成仁"
,
"败者食尘"
,
'银色战车'
,
'疯狂钻石'
,
"壮烈成仁"
,
"败者食尘"
,
...
...
examples/table_view/demo.py
浏览文件 @
f291068e
...
@@ -36,6 +36,9 @@ class Demo(QWidget):
...
@@ -36,6 +36,9 @@ class Demo(QWidget):
# NOTE: use custom item delegate
# NOTE: use custom item delegate
# self.tableView.setItemDelegate(CustomTableItemDelegate(self.tableView))
# self.tableView.setItemDelegate(CustomTableItemDelegate(self.tableView))
# select row on right-click
# self.tableView.setSelectRightClickedRow(True)
self
.
tableView
.
setWordWrap
(
False
)
self
.
tableView
.
setWordWrap
(
False
)
self
.
tableView
.
setRowCount
(
60
)
self
.
tableView
.
setRowCount
(
60
)
self
.
tableView
.
setColumnCount
(
5
)
self
.
tableView
.
setColumnCount
(
5
)
...
...
qfluentwidgets/components/widgets/list_view.py
浏览文件 @
f291068e
# coding:utf-8
# coding:utf-8
from
typing
import
List
,
Union
from
typing
import
List
,
Union
from
PyQt5.QtCore
import
Qt
,
pyqtSignal
,
QModelIndex
,
QItemSelectionModel
from
PyQt5.QtCore
import
Qt
,
pyqtSignal
,
QModelIndex
,
QItemSelectionModel
,
pyqtProperty
from
PyQt5.QtGui
import
QPainter
from
PyQt5.QtGui
import
QPainter
from
PyQt5.QtWidgets
import
QStyleOptionViewItem
,
QListView
,
QListWidgetItem
,
QListView
,
QListWidget
from
PyQt5.QtWidgets
import
QStyleOptionViewItem
,
QListView
,
QListWidgetItem
,
QListView
,
QListWidget
,
QWidget
from
.scroll_bar
import
SmoothScrollDelegate
from
.scroll_bar
import
SmoothScrollDelegate
from
.table_view
import
TableItemDelegate
from
.table_view
import
TableItemDelegate
...
@@ -32,6 +32,7 @@ class ListBase:
...
@@ -32,6 +32,7 @@ class ListBase:
super
().
__init__
(
*
args
,
**
kwargs
)
super
().
__init__
(
*
args
,
**
kwargs
)
self
.
delegate
=
ListItemDelegate
(
self
)
self
.
delegate
=
ListItemDelegate
(
self
)
self
.
scrollDelegate
=
SmoothScrollDelegate
(
self
)
self
.
scrollDelegate
=
SmoothScrollDelegate
(
self
)
self
.
_isSelectRightClickedRow
=
False
FluentStyleSheet
.
LIST_VIEW
.
apply
(
self
)
FluentStyleSheet
.
LIST_VIEW
.
apply
(
self
)
self
.
setItemDelegate
(
self
.
delegate
)
self
.
setItemDelegate
(
self
.
delegate
)
...
@@ -66,13 +67,21 @@ class ListBase:
...
@@ -66,13 +67,21 @@ class ListBase:
QListView
.
keyPressEvent
(
self
,
e
)
QListView
.
keyPressEvent
(
self
,
e
)
self
.
updateSelectedRows
()
self
.
updateSelectedRows
()
def
mousePressEvent
(
self
,
e
):
if
e
.
button
()
==
Qt
.
LeftButton
or
self
.
_isSelectRightClickedRow
:
return
QListView
.
mousePressEvent
(
self
,
e
)
index
=
self
.
indexAt
(
e
.
pos
())
if
index
.
isValid
():
self
.
_setPressedRow
(
index
.
row
())
QWidget
.
mousePressEvent
(
self
,
e
)
def
mouseReleaseEvent
(
self
,
e
):
def
mouseReleaseEvent
(
self
,
e
):
QListView
.
mouseReleaseEvent
(
self
,
e
)
QListView
.
mouseReleaseEvent
(
self
,
e
)
self
.
updateSelectedRows
()
row
=
self
.
indexAt
(
e
.
pos
()).
row
()
if
self
.
indexAt
(
e
.
pos
()).
row
()
<
0
or
e
.
button
()
==
Qt
.
RightButton
:
if
row
>=
0
and
e
.
button
()
!=
Qt
.
RightButton
:
self
.
updateSelectedRows
()
else
:
self
.
_setPressedRow
(
-
1
)
self
.
_setPressedRow
(
-
1
)
def
setItemDelegate
(
self
,
delegate
:
ListItemDelegate
):
def
setItemDelegate
(
self
,
delegate
:
ListItemDelegate
):
...
@@ -108,9 +117,25 @@ class ListWidget(ListBase, QListWidget):
...
@@ -108,9 +117,25 @@ class ListWidget(ListBase, QListWidget):
self
.
updateSelectedRows
()
self
.
updateSelectedRows
()
def
isSelectRightClickedRow
(
self
):
return
self
.
_isSelectRightClickedRow
def
setSelectRightClickedRow
(
self
,
isSelect
:
bool
):
self
.
_isSelectRightClickedRow
=
isSelect
selectRightClickedRow
=
pyqtProperty
(
bool
,
isSelectRightClickedRow
,
setSelectRightClickedRow
)
class
ListView
(
ListBase
,
QListView
):
class
ListView
(
ListBase
,
QListView
):
""" List view """
""" List view """
def
__init__
(
self
,
parent
=
None
):
def
__init__
(
self
,
parent
=
None
):
super
().
__init__
(
parent
)
super
().
__init__
(
parent
)
\ No newline at end of file
def
isSelectRightClickedRow
(
self
):
return
self
.
_isSelectRightClickedRow
def
setSelectRightClickedRow
(
self
,
isSelect
:
bool
):
self
.
_isSelectRightClickedRow
=
isSelect
selectRightClickedRow
=
pyqtProperty
(
bool
,
isSelectRightClickedRow
,
setSelectRightClickedRow
)
\ No newline at end of file
qfluentwidgets/components/widgets/table_view.py
浏览文件 @
f291068e
# coding: utf-8
# coding: utf-8
from
typing
import
List
,
Union
from
typing
import
List
,
Union
from
PyQt5.QtCore
import
Qt
,
QMargins
,
QModelIndex
,
QItemSelectionModel
from
PyQt5.QtCore
import
Qt
,
QMargins
,
QModelIndex
,
QItemSelectionModel
,
pyqtProperty
from
PyQt5.QtGui
import
QPainter
,
QColor
,
QKeyEvent
,
QPalette
,
QBrush
from
PyQt5.QtGui
import
QPainter
,
QColor
,
QKeyEvent
,
QPalette
,
QBrush
from
PyQt5.QtWidgets
import
(
QStyledItemDelegate
,
QApplication
,
QStyleOptionViewItem
,
from
PyQt5.QtWidgets
import
(
QStyledItemDelegate
,
QApplication
,
QStyleOptionViewItem
,
QTableView
,
QTableWidget
,
QWidget
,
QTableWidgetItem
,
QHeaderView
)
QTableView
,
QTableWidget
,
QWidget
,
QTableWidgetItem
,
QHeaderView
)
...
@@ -147,6 +147,7 @@ class TableBase:
...
@@ -147,6 +147,7 @@ class TableBase:
super
().
__init__
(
*
args
,
**
kwargs
)
super
().
__init__
(
*
args
,
**
kwargs
)
self
.
delegate
=
TableItemDelegate
(
self
)
self
.
delegate
=
TableItemDelegate
(
self
)
self
.
scrollDelagate
=
SmoothScrollDelegate
(
self
)
self
.
scrollDelagate
=
SmoothScrollDelegate
(
self
)
self
.
_isSelectRightClickedRow
=
False
# set style sheet
# set style sheet
FluentStyleSheet
.
TABLE_VIEW
.
apply
(
self
)
FluentStyleSheet
.
TABLE_VIEW
.
apply
(
self
)
...
@@ -191,13 +192,21 @@ class TableBase:
...
@@ -191,13 +192,21 @@ class TableBase:
QTableView
.
keyPressEvent
(
self
,
e
)
QTableView
.
keyPressEvent
(
self
,
e
)
self
.
updateSelectedRows
()
self
.
updateSelectedRows
()
def
mousePressEvent
(
self
,
e
):
if
e
.
button
()
==
Qt
.
LeftButton
or
self
.
_isSelectRightClickedRow
:
return
QTableView
.
mousePressEvent
(
self
,
e
)
index
=
self
.
indexAt
(
e
.
pos
())
if
index
.
isValid
():
self
.
_setPressedRow
(
index
.
row
())
QWidget
.
mousePressEvent
(
self
,
e
)
def
mouseReleaseEvent
(
self
,
e
):
def
mouseReleaseEvent
(
self
,
e
):
QTableView
.
mouseReleaseEvent
(
self
,
e
)
QTableView
.
mouseReleaseEvent
(
self
,
e
)
self
.
updateSelectedRows
()
row
=
self
.
indexAt
(
e
.
pos
()).
row
()
if
self
.
indexAt
(
e
.
pos
()).
row
()
<
0
or
e
.
button
()
==
Qt
.
RightButton
:
if
row
>=
0
and
e
.
button
()
!=
Qt
.
RightButton
:
self
.
updateSelectedRows
()
else
:
self
.
_setPressedRow
(
-
1
)
self
.
_setPressedRow
(
-
1
)
def
setItemDelegate
(
self
,
delegate
:
TableItemDelegate
):
def
setItemDelegate
(
self
,
delegate
:
TableItemDelegate
):
...
@@ -241,9 +250,25 @@ class TableWidget(TableBase, QTableWidget):
...
@@ -241,9 +250,25 @@ class TableWidget(TableBase, QTableWidget):
self
.
updateSelectedRows
()
self
.
updateSelectedRows
()
def
isSelectRightClickedRow
(
self
):
return
self
.
_isSelectRightClickedRow
def
setSelectRightClickedRow
(
self
,
isSelect
:
bool
):
self
.
_isSelectRightClickedRow
=
isSelect
selectRightClickedRow
=
pyqtProperty
(
bool
,
isSelectRightClickedRow
,
setSelectRightClickedRow
)
class
TableView
(
TableBase
,
QTableView
):
class
TableView
(
TableBase
,
QTableView
):
""" Table view """
""" Table view """
def
__init__
(
self
,
parent
=
None
):
def
__init__
(
self
,
parent
=
None
):
super
().
__init__
(
parent
)
super
().
__init__
(
parent
)
def
isSelectRightClickedRow
(
self
):
return
self
.
_isSelectRightClickedRow
def
setSelectRightClickedRow
(
self
,
isSelect
:
bool
):
self
.
_isSelectRightClickedRow
=
isSelect
selectRightClickedRow
=
pyqtProperty
(
bool
,
isSelectRightClickedRow
,
setSelectRightClickedRow
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录