gpt4 book ai didi

c++ - 如何在没有 QCheckBox 框的情况下绘制 native 复选标记

转载 作者:太空宇宙 更新时间:2023-11-04 13:30:19 24 4
gpt4 key购买 nike

我想在 Qt 中绘制一个复选标记,看起来像 QCheckBoxes 中使用的 native 复选标记。我还希望能够像在 QCheckBox 中那样绘制部分选中的状态。总结:我想绘制 QCheckBox 的内容,但没有框。我在 Qt 4.8 中工作。

我尝试通过这些调用绘制基本元素以获取复选标记:

// Draws nothing (or nothing that I can see).
QStyleOption styleOption;
styleOption.state |= QStyle::State_Enabled;
styleOption.state |= QStyle::State_On;
QApplication::style()->drawPrimitive( QStyle::PE_IndicatorItemViewItemCheck, &styleOption, &painter );

// Also draws nothing.
QApplication::style()->drawPrimitive( QStyle::PE_IndicatorViewItemCheck, &styleOption, &painter );

当我使用以下调用时,我确实看到了绘图,但是有一个完整的 QCheckBox,周围有我不想要的“框”。

// Draws the complete QCheckBox.
QStyleOptionButton styleOptionButton;
styleOptionButton.state |= QStyle::State_Enabled;
styleOptionButton.state |= QStyle::State_On;
QApplication::style()->drawControl( QStyle::CE_CheckBox, &styleOptionButton, &painter );

// Also draws the complete QCheckBox.
QStyleOptionButton styleOptionButton2;
QCheckBox dummy;
styleOptionButton2.initFrom( &dummy );
QApplication::style()->drawPrimitive( QStyle::PE_IndicatorCheckBox, &styleOptionButton2, inPainter );

// Also draws the complete QCheckBox.
QStyleOption styleOption;
styleOption.state |= QStyle::State_Enabled;
styleOption.state |= QStyle::State_On;
styleOption.rect = QRect( 0, 0, 16, 16 );
QApplication::style()->drawPrimitive( QStyle::PE_IndicatorItemViewItemCheck, &styleOption, &painter );

当我使用以下调用来绘制其他原始元素时,它们确实被绘制了,但不是 QCheckBoxes 中使用的复选标记(它们非常丑陋)。

// Draws an ugly check mark.
QStyleOption styleOption;
styleOption.state |= QStyle::State_Enabled;
QApplication::style()->drawPrimitive( QStyle::PE_IndicatorMenuCheckMark, &styleOption, &painter );

那么有没有办法只画一个QCheckBox的复选标记,而不用画框呢?

最佳答案

我知道这是一篇旧文章,但对于任何其他做类似事情的人来说,它就像在 QCheckBox 的 指示器上设置样式表一样简单。

用这样一行设置它的样式表:

QCheckBox box;
box.setStyleSheet(QString("QCheckBox::indicator{ border: rgba(0, 0, 0, 0); }"));

这样做会将边框指示器设置为透明。您还可以将已选中/悬停的样式表属性覆盖为自定义复选标记或您喜欢的任何自定义图标。结合这些效果可以产生非常现代的前端。

关于c++ - 如何在没有 QCheckBox 框的情况下绘制 native 复选标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31741908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com