Qt 自定义控件 带UI 不带 UI

 一般自定义控件原因

有时Qt 现有控件不能满足我们的开发需求,这时候就需要我们进行自定义控件的使用,自定义控件,这大大提高了设计UI的通用性,程序利用,封装;

Part1 easy one

继续 Lab

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

效果:

 CODE:

#ifndef LABELTOOLTIP_H
#define LABELTOOLTIP_H
 
#include 
 
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

Part2 : 带UI 继承 widget

Add new。然后添加Qt设计师界面类, 选择 widget

Qt 自定义控件 带UI 不带 UI_第1张图片

 

Qt 自定义控件 带UI 不带 UI_第2张图片

 

 Qt 自定义控件 带UI 不带 UI_第3张图片

 

 设置类名 

Qt 自定义控件 带UI 不带 UI_第4张图片

 next ,completed 进入UI 界面,可以插入几个控件;我这里放了一个 Labe pushbutton

Qt 自定义控件 带UI 不带 UI_第5张图片

 

这里简单的自定义控件就完成了;

双击打开 mainwindow.ui,添加一个 Widget; 右键 提升控件;

Qt 自定义控件 带UI 不带 UI_第6张图片

在提升类名称处,添加刚才的类名,点击添加,选中,再提升按钮

Qt 自定义控件 带UI 不带 UI_第7张图片

 此时控件已经变成我们的自定义控件;运行,展示效果:

Qt 自定义控件 带UI 不带 UI_第8张图片

 Part3 不带UI 自定义控件

新建一个C++ 类,继承 widget

Qt 自定义控件 带UI 不带 UI_第9张图片

 接着在类里添加你需要的就可以,这里我写了一个 自定义 带 checkbox 展示栏

带不同的颜色,可以选中;

Qt 自定义控件 带UI 不带 UI_第10张图片

 

all

 Qt 自定义控件 带UI 不带 UI_第11张图片

 工程代码我会放资源里;

你可能感兴趣的:(QT,Qt,自定义控件)