我是靠谱客的博主 尊敬画笔,最近开发中收集的这篇文章主要介绍Qt自定义控件学习自定义控件1:CheckBox,选择框,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

自定义控件1:CheckBox,选择框

首先先看效果图:
在这里插入图片描述

关键代码:

利用Qt中绘图事件重绘,根据需求,画checkbox外围及内部。由于这个类暂时没打算放到项目使用,所以很多参数是直接写的固定值在里面,没有添加get,set方法。

// CMCheckBox.cpp
void CMCheckBox::paintEvent(QPaintEvent *event){
    QPainter painter(this);
    //反锯齿
    painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);

    paintBackG(&painter);//画背景
    paintIn(&painter);//画内部
}

void paintBackG(Qpainter*)

void CMCheckBox::paintBackG(QPainter* painter){
    painter->save();
    painter->setPen(Qt::NoPen);
    painter->setBrush(QBrush(checked?checkColor:unCheckColor));

    painter->drawRoundedRect(rect(), rectRadius/2, rectRadius);
    painter->restore();
}

void paintIn(QPainter*)

void CMCheckBox::paintIn(QPainter* painter){
    int space = 4;
    int startX = 1;
    painter->save();
    painter->setPen(Qt::NoPen);
    painter->setBrush(QBrush(slideColor));
    int sliderWidth = width() / 2 - space * 2;
    int sliderHeight = height() - space * 2;
    if(checked){
        QRect sliderRect(width()-(startX + space+sliderWidth), space, sliderWidth , sliderHeight);
        painter->drawRoundedRect(sliderRect, rectRadius, rectRadius);
    }else{
        QRect sliderRect(startX + space, space, sliderWidth , sliderHeight);
        painter->drawRoundedRect(sliderRect, rectRadius, rectRadius);
    }
    painter->restore();
}

注:想学习自定义控件的兄弟们,可以搜搜刘大神(liudianwu)的各种作品进行学习,同时也开源了很多控件,值得学习哦,值得推荐。

最后

以上就是尊敬画笔为你收集整理的Qt自定义控件学习自定义控件1:CheckBox,选择框的全部内容,希望文章能够帮你解决Qt自定义控件学习自定义控件1:CheckBox,选择框所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(30)

评论列表共有 0 条评论

立即
投稿
返回
顶部