Qt如何去掉按钮等控件的虚线框的三种办法(焦点框)
2018-02-09 17:31
375 查看
Qt如何去掉按钮等控件的虚线框的三种办法(焦点框)
方法1:通过代码来实现ui->pushButton->setFocusPolicy(Qt::NoFocus)
也可以在Qt Creator的属性列表中设置。
方法2:如果在嵌入式设备中需要通过按键切换控件,最简单的方法就是通过控件的focus来实现,就不能使用方法1了,此时可以通过
qss样式表来去掉虚线框,代码如下所示。
ui->pushButton->setStyleSheet("outline: none");
方法3:使用qss样式表来实现
ui->pushButton->setStyleSheet("padding: -1");
方法4:
QItemDelegate结果是,虚线没了,样式也没了
这个方法的作用原理和
QItemDelegate基本一致, 因为
QItemDelegate的
drawFocus函数调用
QStyle的
drawPrimitive虚函数去做实际的绘制, 所以如果我们重新定义这个绘制过程能达到同样的效果。
drawPrimitive函数负责绘制非常基本的界面元素,根据传入的参数判断需要绘制的元素,具体到本例就是要针对
PE_FrameFocusRect元素做特殊处理。例子代码如下
class NoFocusRectangleStyle: public QCommonStyle { public: ... void NoFocusRectangleStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const { if (QStyle::PE_FrameFocusRect == element ) return; else QCommonStyle::drawPrimitive(element, option, painter,widget); } };
相关文章推荐
- Qt如何去掉按钮等控件的虚线框(焦点框)(三种办法)
- Qt如何去掉按钮等控件的虚线框(焦点框)
- Qt如何去掉按钮等控件的虚线框(焦点框)
- Qt如何去掉按钮等控件的虚线框(焦点框)(两种方法)
- QT去除控件被选中后的焦点虚线框
- QT编程中如何给按钮等控件加载图标以及QT编程中使用中文的问题
- 【转载】Qt去掉view项的焦点虚线框的方法
- QT去除控件被选中后的焦点虚线框
- Qt 如何把一个按钮控件放在窗体的左上脚
- Qt去掉view项的焦点虚线框的方法(转)
- 如何去掉按钮在输入焦点切换时所产生的闪烁
- Qt 按钮菜单如何与按钮右边界对齐,并去掉下拉箭头
- 如何去掉按钮在输入焦点切换时所产生的闪烁
- 如何通过QThread自定义子线程来控制QT窗口控件
- 如何通过按钮使dateTimePicker的月份获得焦点
- dojo 创建按钮和文本输入框 tip 提示以及控件焦点 focus
- silverlight 如何编辑控件模板?以制作圆形按钮为例
- QT 进行动态绑定信号槽时,如何正确找到当前操作的控件?
- 如何去掉LinkButton控件的下划线
- c# 线程中如何控制控件焦点