Qt自定义控件

1、自定义Button控件:左边图标 + 右边文本

#ifndef BTNLEFTICONRIGHTTEXT_H
#define BTNLEFTICONRIGHTTEXT_H

#include <QPushButton>
#include <QLabel>
#include <QHBoxLayout>

class CBtnLeftIconRightText : public QPushButton
{
	Q_OBJECT

public:
	CBtnLeftIconRightText(QWidget *parent) : QPushButton(parent)
	{
		//创建水平布局器
		m_pHBoxLayout = new QHBoxLayout(this);
		m_pHBoxLayout->setContentsMargins(8, 2, 10, 2);
		m_pHBoxLayout->setSpacing(5);

		//创建Icon标签,并插入水平布局器
		m_pLabIcon = new QLabel(this);
		m_pLabIcon->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
		m_pLabIcon->setFixedWidth(24);
		m_pHBoxLayout->addWidget(m_pLabIcon);

		//创建Text标签,并插入水平布局器
		m_pLabText = new QLabel(this);
		m_pLabText->setObjectName("pLabBtnRightText");
		m_pLabText->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
		m_pLabText->setAlignment(Qt::AlignVCenter | Qt::AlignRight);
		m_pHBoxLayout->addWidget(m_pLabText);
	}

	~CBtnLeftIconRightText(){}

	void SetText(QString strText)
	{
		//设置显示文本内容
		m_pLabText->setText(strText);
	}

	void SetBtnIcon(QString strIconNor, QString strIconDis)
	{
		//设置样式表属性,设置Icon图标(使能打开时显示strIconNor,使能关闭时显示strIconDis)
		m_pLabIcon->setStyleSheet(QString("QLabel{border: none;image: url(%1);}QLabel:disabled{border: none;image: url(%2);}").arg(strIconNor).arg(strIconDis));
	}

	void SetChecked(bool bChecked)
	{
		//设置该Button是否已选中,设置Icon标签的使能开关(用作Icon切换图标是的判断)
		setChecked(bChecked);
		m_pLabIcon->setEnabled(bChecked);
	}

	bool IsEnabled()
	{
		//获取当前Icon标签的使能开关
		return m_pLabIcon->isEnabled();
	}

private:
	QLabel*			m_pLabIcon;
	QLabel*			m_pLabText;
	QHBoxLayout*	m_pHBoxLayout;
};

#endif // BTNLEFTICONRIGHTTEXT_H

2、自定义Label控件:文本太长省略 + 提示

#ifndef LABELTOOLTIP_H
#define LABELTOOLTIP_H

#include <QLabel>

class CLabelToolTip : public QLabel
{
	Q_OBJECT

public:
	CLabelToolTip(QWidget *parent) : QLabel(parent)
	{
		m_mode = Qt::ElideRight;
	}

	~CLabelToolTip(){}

	void setText(const QString & strText)
	{
		m_strText = strText;

		QFontMetrics elidfont(font());
		QString strRetText = elidfont.elidedText(strText, m_mode, width());
		if (strRetText != strText)
			setToolTip(strText);
		else
			setToolTip("");
		QLabel::setText(strRetText);
	}

protected:
	void resizeEvent(QResizeEvent *event)
	{
		setText(m_strText);
	}

private:
	QString				m_strText;
	Qt::TextElideMode	m_mode;	
};

#endif // LABELTOOLTIP_H

效果如下:

 3、后续更新。。。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QT是一种跨平台的图形用户界面开发框架,允许开发者创建各种自定义件。其中的一个自定义件就是表盘,可以用来展示时间、进度或其他指示器。 QT定义件表盘的实现可以通过继承QAbstractSlider类来实现。首先,我们需要定义一个继承自QWidget的类,这个类将成为我们自定义表盘件的主窗口。在这个类中,我们可以添加各种用于展示表盘的元素,比如指针、刻度、数字等。 接下来,在主窗口类的构造函数中,我们可以设置一些件的基本属性,比如大小、位置、样式等。然后,可以创建QPainter对象并使用它来绘制各种表盘元素。绘制过程中,我们可以使用QPainter的API来画出指针、刻度线、数字等等。 为了实现表盘的交互功能,我们可以重写主窗口类的一些事件处理函数,比如鼠标按下、移动、释放事件等。通过这些事件处理函数,我们可以改变表盘的显示状态,比如旋转指针、更新数值等等。 除了绘制和交互功能,我们还可以通过添加信号和槽来实现表盘和外部代码的交互。比如,我们可以在表盘被点击时发送一个信号,让外部的槽函数来处理相应的逻辑。 总之,通过QT的自定义件功能,我们可以方便地创建各种定制化的表盘件。通过继承QAbstractSlider类,定义绘制元素、处理事件和信号、槽函数等,我们可以实现一个完整的、交互性强的表盘件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值