• 13826阅读
  • 9回复

[提问]QTableWidget如何取消点击一个item时出现的那个虚线框 [复制链接]

上一主题 下一主题
离线tangxunmin
 

只看楼主 倒序阅读 楼主  发表于: 2012-04-09
— 本帖被 XChinux 设置为精华(2013-12-07) —
使用了
tablewigdet->setSelectionMode(QAbstractItemView::NoSelection);
tablewigdet->setEditTriggers(QAbstractItemView::NoEditTriggers);

还是会出现个虚线框,有没有什么设置能把那个虚线框去掉呢
离线passion_wu
只看该作者 1楼 发表于: 2012-04-09
我找了好久也没找到简单的办法,估计只有使用继承,然后重新paintEvent函数了,但这样好麻烦!!!
希望高手给出简单办法
离线passion_wu
只看该作者 2楼 发表于: 2012-04-09
我看了下源代码,这样可以满足你的要求:
table->setFocusPolicy(Qt::NoFocus);
或者是
table->viewport()->setFocusPolicy(Qt::NoFocus);
离线zzh12215
只看该作者 3楼 发表于: 2012-04-09
passion_wu  说的对,不过这样的话,无法使用键盘控制table了
离线tangxunmin

只看该作者 4楼 发表于: 2012-04-09
回 2楼(passion_wu) 的帖子
非常感谢这么热心的回答。这样可以了
离线tangxunmin

只看该作者 5楼 发表于: 2012-04-09
回 3楼(zzh12215) 的帖子
没事,我的不需要键盘控制,这样可以满足要求了
离线shiziyang

只看该作者 6楼 发表于: 2012-04-09
我的做法是重载当前使用的QStyle,重新实现函数,比如当前我使用的是QCleanlooksStyle,那么我继承一个叫CCleanlooksStyle的类实现如下:

#include "ccleanlooksstyle.h"

CCleanlooksStyle::CCleanlooksStyle()
{
}

void CCleanlooksStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option,
                                QPainter *painter, const QWidget *widget) const
{
    switch (element)
    {
    case PE_FrameFocusRect:
        {
            break;
        }
    default:
        {
            QCleanlooksStyle::drawPrimitive(element, option, painter, widget);
            break;
        }
    }
    return;
}

然后对应用程序或者就那个tablewidget调用setStyle函数就可(对应用程序设置的话所有控件都不会有聚焦的虚线框)。


离线passion_wu
只看该作者 7楼 发表于: 2012-04-13
回 6楼(shiziyang) 的帖子
学习了,这是一种比较高级的办法,也是最好的解决办法
离线netlove

只看该作者 8楼 发表于: 2012-04-13
留印学习

只看该作者 9楼 发表于: 2013-12-03
教你如何去掉虚线!QTable详解
http://blog.sina.com.cn/s/blog_a6fb6cc90101dd5u.html
博客地址:https://waleon.blog.csdn.net
微信公众号:高效程序员
QQ 群:242790253
微信群:加微信(iwaleon),邀请入群。

承接各种 C++/Qt/QML 项目,专业的团队,一流的服务,不二的选择!
快速回复
限100 字节
 
上一个 下一个