Qt 界面使用自定义控件 "提升为"

1.效果图

我做了一个非常简单的例子,一个可以显示颜色的QLabel,边上有个按钮,点击,跳出颜色选取的Dialog,然后选择一个颜色,这个QLabel会变成什么颜色。

2.ColorLabel

我们先把这个自定义的类写好:

头文件:

#ifndef COLORLABEL_H
#define COLORLABEL_H

#include <QLabel>
#include <QPainter>

class ColorLabel : public QLabel{
    Q_OBJECT
public:
    explicit ColorLabel(QWidget *parent=0);
    void setColor(QColor c);
private:
    QColor color;
    QPainter *paint;
    void paintEvent(QPaintEvent *);
};

#endif // COLORLABEL_H

实现文件:

#include "colorlabel.h"

ColorLabel::ColorLabel(QWidget *parent):QLabel(parent), color(Qt::white){
}

void ColorLabel::paintEvent(QPaintEvent *){
    paint = new QPainter;
    paint->begin(this);
    paint->setBrush(QBrush(color,Qt::SolidPattern));
    paint->drawRect(0, 0, this->geometry().width(), this->geometry().height());
    paint->end();
}

void ColorLabel::setColor(QColor c){
    color = c;
}

3.界面文件里添加ColorLabel

拖一个普通的QLabel到界面文件里,然后右击这个控件,选择提升为。

输入类名称,就OK了。

我们可以去Qt根据布局文件生成的头文件里面看下,它自己包含了colorlabel.h,把QLabel都改成了ColorLabel。

Qt写起来真是不错。

4.本博文例子下载:

http://www.waitingfy.com/?attachment_id=1170

参考:

Qt 界面使用自定义控件

Qt 界面使用自定义控件 "提升为",布布扣,bubuko.com

时间: 2024-08-03 07:54:38

Qt 界面使用自定义控件 "提升为"的相关文章

Qt界面美化 QSS

目前发现在Qt-Design中右击控件,可以选择Change StyleSheet ------------------------以下总结不太对 刚接触Qt,发现Qt Design无法对每个控件进行颜色风格设置.正在纳闷如此受欢迎的开发工具,怎么会没有这种,Delphi,VB,VC,C#都具备的基本功能呢? 后来在CSDN上才知道,Qt已经走在这些工具的最前方了,把界面已经独立出来和web编程一样.web有CSS专门美化工作.而Qt也有QSS进行美化设计.完全可以不影响程序开发.而且可以直接调

在ROS中使用QT界面

在终端可以直接用catkin_create_qt_pkg命令创建带Qt界面的ROS package,再按照前面说的方法导入到Qt即可 这里参考的是qt_createTutorialsQt App Templates (1) 要使用catkin_create_qt_pkg命令需要安装一个包,执行如下命令: $ sudo apt-get install ros-indigo-qt-ros 这样我就可以使用catkin_create_qt_pkg命令创建一个名为testgui的package $ cd

qt之旅-1纯手写Qt界面

通过手写qt代码来认识qt程序的构成,以及特性.设计一个查找对话框.下面是设计过程 1 新建一个empty qt project 2 配置pro文件 HEADERS += Find.h QT += widgets SOURCES += Find.cpp main.cpp 3 编写对话框的类 代码如下: //Find.h #ifndef FIND_H #define FIND_H #include <QDialog> class QCheckBox; class QLabel; class QL

QT界面开发-(特效)无边框窗口+背景图片

转发自邵发<C/C++系列教程>Qt界面开发 https://chuanke.baidu.com/4509752-209060.html 1.自己用代码画界面 2.用Laber控件放一张背景大图 hpp 1 #include <QtWidgets> 2 3 4 private: 5 virtual void paintEvent(QPaintEvent *event); 6 7 virtual void mouseMoveEvent(QMouseEvent * event); 8

Qt C++控件提升,微件之间定义传递信号和槽案例

Widget  ----微件,Android编程里面常见的控件组织形式 新建一项目,步骤如下:   在ui设计界面中添加了一个Widget控件:图片中选中处 自定义一个微件,这里我命名为smallwidget,在构造函数实现中,定义一个旋转数码盒(Qt中的spinbox),一个滑动条. #include "smallwidget.h" #include <QSpinBox> #include <QSlider> #include <QHBoxLayout&

qt界面编写流程记录

qt的关键在于信号与槽机制. 1. 利用qtcreator 创建   qt widgeets application 工程 main.cpp   mainwindow.cpp  mainwindow.h  文件    .ui 界面设计文件 #include "mainwindow.h" #include <QApplication> #include <QPushButton> int main(int argc, char *argv[]) { QApplic

Qt界面中嵌入其他exe程序的界面,使用Qt5

下面用一个小例子来演示如何在Qt的界面中嵌入其他exe程序的界面,最终效果如下图所示.本文参考了 http://blog.csdn.net/jiaoyaziyang/article/details/49802993,感谢原作者. 下面是具体的实现方法,用Windows自带的计算器程序做例子.主要的思路就是获取到计算器程序的窗口类名称,然后在Qt中利用QWindow的静态函数fromWinId,创建出QWindow对象,然后将这个对象放到一个QWidget中. 首先是获取计算器程序的窗口类名称,主

《转》QT界面怎么使控件随窗口大小变化一直居中显示

使用QT开发界面时常遇到一些控件位置变动的问题,使用布局可以解决很多问题,比如设置居中显示. 工具/原料 QT开发工具 方法/步骤 首先我们在界面中添加一个QLabel控件. 在控件上边下边分别添加一个竖直的弹簧,选中这三个控件,然后点击竖直布局,如下图所示.布局结果如右图. 然后在上次布局的两侧添加水平的弹簧,选中两个弹簧和上次的布局,点击水平布局.布局效果如图 最后选中最外层的窗口,然后点击水平或竖直布局,进行整体布局 布局效果如下图,现在可以运行一下,然后拖动界面改变大小来试一下效果了.

SDK、MFC、QT界面生成的机制

1.SDK进行界面设计的机制 (1)设计窗口类 (2)注册窗口类 (3)创建窗口 (4)显示及更新窗口 (5)消息循环,操作系统接收到应用程序的窗口消息,将消息投递到队列中,通过GetMessage()函数来取得消息,然后TranslateMessage进行消息格式转换,通过DispatchMessage函数分派一个消息到窗口过程.然后通过窗口过程函数,switch函数进行消息判断从而确定是何种消息,然后进行相关的处理. 2.MFC的消息映射机制 ON_WM_LBUTTONDOWN是一个消息映射