QTableView选中的样式,有一个虚线框,有什么办法可以去掉这个虚线吗,可以通过样式表吗
2条回答 默认 最新
- ChatGPTᴼᴾᴱᴺᴬᴵ 2023-09-10 19:40关注
所有内容均由人工智能模型输出,其内容的准确性和完整性无法保证,不代表我的态度或观点。
该回答引用ChatGPT-3.5,仅为您提供参考,不保证完全正确
可以通过样式表来去掉QTableView
中选中项的虚线框。虚线框通常是由于焦点状态而显示的,所以你可以使用样式表来修改焦点样式以隐藏虚线。
以下是一个示例,演示如何使用样式表来隐藏
QTableView
中选中项的虚线框:QTableView::item:focus { outline: none; /* 隐藏虚线框 */ }
你可以将这个样式表应用到你的
QTableView
对象上,方法如下:QTableView *tableView = new QTableView; tableView->setStyleSheet("QTableView::item:focus { outline: none; }");
这将移除
QTableView
中选中项的虚线框。如果你想要自定义选中项的背景颜色、文字颜色等,也可以在样式表中添加相应的属性来进行更多的样式定制。
该回答引用NewBing,仅为您提供参考,不保证完全正确
QTableView选中时的虚线框是表示焦点状态的,有几种方法可以去掉它:- 方法一:设置表格不获取焦点。代码如下:
table->setFocusPolicy(Qt::NoFocus);
这种方法简单粗暴,缺点就是这样设置后没法使用与focus状态相关的功能,如不能使用tab键切换选中的单元格。⁴
- 方法二:使用样式表,设置outline为none,并且设置item的样式。代码如下:
QTableView { outline: none; } QTableView::item:selected { background: rgb(0, 0, 100); // 背景颜色 color: white; // 字体颜色 }
这种方法很灵活,很适合自定义表格外观的情况。⁴
- 方法三:使用代理。从QStyledItemDelegate派生一个类TableDelegate, 然后重写paint函数。代码如下:
class TableDelegate : public QStyledItemDelegate { public: void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override { QStyleOptionViewItem itemOption(option); if (itemOption.state & QStyle::State_HasFocus) { itemOption.state = itemOption.state ^ QStyle::State_HasFocus; } QStyledItemDelegate::paint(painter, itemOption, index); } };
然后为表格设置代理,代码如下:
TableDelegate* delegate = new TableDelegate(); table->setItemDelegate(delegate);
这种方法更适合实现更高级的功能,如果只是单纯为了去除虚线框的话,这样操作就略显麻烦了。⁴
源: 与必应的对话, 2023/9/10
(1) 如何去除QTableWidget表格选中Item时的虚线框? - CSDN博客. https://blog.csdn.net/can3981132/article/details/115320235.
(2) QTableView的样式设置和常用函数 - YueLiGo - 博客园. https://www.cnblogs.com/wsw2022/p/17081136.html.
(3) Qt QTableView样式设置_qtableview设置样式_妙为的博客-CSDN博客. https://blog.csdn.net/aoxuestudy/article/details/114022268.
(4) QTableView设置样式表/选中行颜色, QTableView美化 - CSDN博客. https://blog.csdn.net/qq_53201472/article/details/129975014.
(5) 去掉QTableView、QTreeView内item被选中时的虚线框 - CSDN博客. https://blog.csdn.net/qq_39805297/article/details/88847725.
(6) QTableView Class | Qt Widgets 6.5.2. https://doc.qt.io/qt-6/qtableview.html.
(7) QTableView详细使用说明_qtabview_猿太极的博客-CSDN博客. https://blog.csdn.net/u010031316/article/details/116886567.
该回答引用文心一言,仅为您提供参考,不保证完全正确
对于去掉 QTableView 中选中的虚线框,可以使用样式表(StyleSheet)来实现。可以通过在 QTableView 上设置样式表来改变其选中状态的样式。
以下是一个示例代码,演示如何去掉 QTableView 中选中的虚线框:
#include <QApplication> #include <QTableView> int main(int argc, char *argv[]) { QApplication app(argc, argv); QTableView tableView; tableView.setModel(new QStandardItemModel); // 设置数据模型,这里使用了一个简单的标准模型 // 设置样式表,去掉选中的虚线框 tableView.setStyleSheet("QTableView::item:selected { border: none; }"); tableView.show(); return app.exec(); }
在上面的示例中,通过调用
setStyleSheet
方法,设置了 QTableView 的样式表。其中,QTableView::item:selected
表示选中状态的样式,border: none;
表示去掉边框。这样,当选中某一行或某一列时,虚线框就会被隐藏掉。
注意:样式表的语法和 CSS 类似,可以根据需要进行调整。如果需要更复杂的样式设置,可以参考 Qt 的文档中关于样式表的部分。
该回答引用讯飞星火,仅为您提供参考,不保证完全正确
您可以通过设置QTableView的样式表来取消选中时的虚线框。在样式表中,使用"selection-background-color"属性来设置选中时的背景颜色,使用"outline"属性来设置选中时的边框样式。将"outline"属性设置为"none"可以取消虚线框。以下是一个示例代码:tableView.setStyleSheet("QTableView::item:selected { background-color: #0078d7; outline: none; }")
在上述代码中,将选中时的背景颜色设置为"#0078d7",将边框样式设置为"none",这样就可以取消虚线框了。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 求lingo代码和思路
- ¥15 公交车和无人机协同运输
- ¥15 stm32代码移植没反应
- ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
- ¥100 连续两帧图像高速减法
- ¥15 如何绘制动力学系统的相图
- ¥15 对接wps接口实现获取元数据
- ¥20 给自己本科IT专业毕业的妹m找个实习工作
- ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
- ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)