波塞冬~ 2023-09-10 19:27 采纳率: 50%
浏览 5
已结题

QTableView样式问题

img

img

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条)

报告相同问题?

问题事件

  • 系统已结题 9月18日
  • 已采纳回答 9月10日
  • 创建了问题 9月10日

悬赏问题

  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)