一般自定义控件原因
有时Qt 现有控件不能满足我们的开发需求,这时候就需要我们进行自定义控件的使用,自定义控件,这大大提高了设计UI的通用性,程序利用,封装;
Part1 easy one
继续 Lab
自定义Label控件:文本太长省略 + 提示
效果:
CODE:
#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
Part2 : 带UI 继承 widget
Add new。然后添加Qt设计师界面类, 选择 widget
设置类名
next ,completed 进入UI 界面,可以插入几个控件;我这里放了一个 Labe pushbutton
这里简单的自定义控件就完成了;
双击打开 mainwindow.ui,添加一个 Widget; 右键 提升控件;
在提升类名称处,添加刚才的类名,点击添加,选中,再提升按钮
此时控件已经变成我们的自定义控件;运行,展示效果:
Part3 不带UI 自定义控件
新建一个C++ 类,继承 widget
接着在类里添加你需要的就可以,这里我写了一个 自定义 带 checkbox 展示栏
带不同的颜色,可以选中;
all
工程代码我会放资源里;