Qt自定义窗口部件
改进法
- #ifndef HEXSPINBOX_H
- #define HEXSPINBOX_H
- #include <QSpinBox>
- class QRegExpValidator;
- class HexSpinBox : public QSpinBox
- {
- Q_OBJECT
- public:
- HexSpinBox(QWidget *parent = 0);
- protected:
- QValidator::State validate(QString &text, int &pos) const;
- int valueFromText(const QString &text) const;
- QString textFromValue(int value) const;
- private:
- QRegExpValidator *validator;
- };
- #endif
- #include <QtGui>
- #include "hexspinbox.h"
- HexSpinBox::HexSpinBox(QWidget *parent)
- : QSpinBox(parent)
- {
- setRange(0, 255);
- validator = new QRegExpValidator(QRegExp("[0-9A-Fa-f]{1,8}"), this);
- }
- QValidator::State HexSpinBox::validate(QString &text, int &pos) const
- {
- return validator->validate(text, pos);
- }
- int HexSpinBox::valueFromText(const QString &text) const
- {
- bool ok;
- return text.toInt(&ok, 16);
- }
- QString HexSpinBox::textFromValue(int value) const
- {
- return QString::number(value, 16).toUpper();
- }
- #include <QtGui/QTableWidget>
- #include <QtGui/QToolBar>
- #include <QtGui/QWidget>
- #include "hspinbox.h"
- QT_BEGIN_NAMESPACE
- class Ui_QMainClass
- {
- public:
- QWidget *centralWidget;
- QPushButton *pushButton;
- QTableWidget *tableWidget;
- QSpinBox *spinBox;
- HSpinBox *hspinBox;
插件法
custom.h
- #ifndef CUSTOM_H
- #define CUSTOM_H
- #include <QtGui/QWidget>
- #include "ui_test.h"
- class custom : public QWidget
- {
- Q_OBJECT
- public:
- custom(QWidget *parent = 0);
- ~custom();
- private:
- Ui::Form ui;
- };
- #endif // CUSTOM_H
custom.cpp
- #include "custom.h"
- custom::custom(QWidget *parent)
- : QWidget(parent)
- {
- ui.setupUi(this);
- }
- custom::~custom()
- {
- }
customplugin.h
- #ifndef CUSTOMPLUGIN_H
- #define CUSTOMPLUGIN_H
- #include <QDesignerCustomWidgetInterface>
- class customPlugin : public QObject, public QDesignerCustomWidgetInterface
- {
- Q_OBJECT
- Q_INTERFACES(QDesignerCustomWidgetInterface)
- public:
- customPlugin(QObject *parent = 0);
- bool isContainer() const;
- bool isInitialized() const;
- QIcon icon() const;
- QString domXml() const;
- QString group() const;
- QString includeFile() const;
- QString name() const;
- QString toolTip() const;
- QString whatsThis() const;
- QWidget *createWidget(QWidget *parent);
- void initialize(QDesignerFormEditorInterface *core);
- private:
- bool initialized;
- };
- #endif // CUSTOMPLUGIN_H
- #include "custom.h"
- #include <QtCore/QtPlugin>
- #include "customplugin.h"
- customPlugin::customPlugin(QObject *parent)
- : QObject(parent)
- {
- initialized = false;
- }
- void customPlugin::initialize(QDesignerFormEditorInterface */*core*/)
- {
- if (initialized)
- return;
- initialized = true;
- }
- bool customPlugin::isInitialized() const
- {
- return initialized;
- }
- QWidget *customPlugin::createWidget(QWidget *parent)
- {
- return new custom(parent);
- }
- QString customPlugin::name() const
- {
- return "custom";
- }
- QString customPlugin::group() const
- {
- return "My Plugins";
- }
- QIcon customPlugin::icon() const
- {
- return QIcon();
- }
- QString customPlugin::toolTip() const
- {
- return QString();
- }
- QString customPlugin::whatsThis() const
- {
- return QString();
- }
- bool customPlugin::isContainer() const
- {
- return false;
- }
- QString customPlugin::domXml() const
- {
- return "<widget class=\"custom\" name=\"custom\">\n"
- " <property name=\"geometry\">\n"
- " <rect>\n"
- " <x>0</x>\n"
- " <y>0</y>\n"
- " <width>100</width>\n"
- " <height>100</height>\n"
- " </rect>\n"
- " </property>\n"
- "</widget>\n";
- }
- QString customPlugin::includeFile() const
- {
- return "custom.h";
- }
- Q_EXPORT_PLUGIN2(custom, customPlugin)
- Q_EXPORT_PLUGIN2(customWidgetPlugin, CustomWidgetPlugin) // 第一个参数为插件的名字,第二个是插件类的名字(而不是自定义控件的类名)
Qt自定义窗口部件的更多相关文章
- Qt入门(19)——自定义窗口部件
我们介绍可以画自己的第一个自定义窗口部件.我们也加入了一个有用的键盘接口.我们添加了一个槽:setRange(). void setRange( int minVal, int maxV ...
- C++ GUI Qt4编程-创建自定义窗口部件
C++ GUI Qt4编程-创建自定义窗口部件 Qtqt4 通过Qt窗口部件进行子类化或者直接对QWidget进行子类化,就可以创建自定义窗口部件,下面示范两种方式,并且也会说明如何把自定义窗口部 ...
- C++框架_之Qt的窗口部件系统的详解-上
C++框架_之Qt的窗口部件系统的详解-上 第一部分概述 第一次建立helloworld程序时,曾看到Qt Creator提供的默认基类只有QMainWindow.QWidget和QDialog三种. ...
- Kivy 中文教程 实例入门 简易画板 (Simple Paint App):1. 自定义窗口部件 (widget)
1. 框架代码 用 PyCharm 新建一个名为 SimplePaintApp 的项目,然后新建一个名为 simple_paint_app.py 的 Python 源文件, 在代码编辑器中,输入以下框 ...
- Qt学习之自定义窗口部件
自定义Qt窗口部件 实现一个十六进制的SpinBox,一般SpinBox只支持十进制整数,但是可以子类化方法实现该功能 需重新实现以下虚函数 virtual QString textFromValue ...
- QT自定义窗口(模拟MainWindow)
在这里自定义窗口是通过继承于QFrame,内部分为上下两部分,上半部分就是标题栏,下面是窗口的具体内容.上下两部分通过布局固定位置.最后窗口的各种鼠标拖动,缩放,等操作通过添加鼠标事件来完成一个窗口的 ...
- QT自定义窗口
qt 中允许自定义窗口控件,使之满足特殊要求, (1)可以修改其显示,自行绘制 (2)可以动态显示 (3)可以添加事件,支持鼠标和键盘操作 自定义控件可以直接在QtDesigner里使用,可以直接加到 ...
- QT5中如何自定义窗口部件
提升法 eg.(定义一个新的QLable部件)1.定义一个类class Label : public base, public QLabel //可以支持多重继承2.在qt creator中打开ui编 ...
- qt 自定义窗口绘制正弦曲线
circlewidget.h #ifndef CIRCLAWIDGET_H #define CIRCLAWIDGET_H #include <QFrame> #include<QVe ...
随机推荐
- javabean转成json字符首字母大写
今天写接口的时候有个需求将接口返回的json字符串首字母大写:{"SN":"","Result":""}格式, 只需要在 ...
- PHP转码函数mb_convert_encoding() 和iconv()
注意:函数mb_convert_encoding的执行效率比iconv差,且需开启php的mbstring扩展. 一般情况下使用iconv,但此函数在碰到无法转码字符会丢弃,此种情况下可以用mb_co ...
- SQL学习——BETWEEN运算符
原文链接 BETWEEN的作用 BETWEEN 操作符用于选取介于两个值之间的数据范围内的值. BETWEEN的边界 BETWEEN运算符选择给定范围内的值.值可以是数字,文本或日期. BETWEEN ...
- 2.3 使用 dom4j 对 xml文件进行 dom 解析
// 使用dom4j对XML文档进行解析 CRUD public class Demo1 { //读取XML文档中第二本书的书名 <书名>javaWEB</书名> @Test ...
- PAT Basic 1083 是否存在相等的差 (20 分)
给定 N 张卡片,正面分别写上 1.2.…….N,然后全部翻面,洗牌,在背面分别写上 1.2.…….N.将每张牌的正反两面数字相减(大减小),得到 N 个非负差值,其中是否存在相等的差? 输入格式: ...
- okhttp缓存策略源码分析:put&get方法
对于OkHttp的缓存策略其实就是在下一次请求的时候能节省更加的时间,从而可以更快的展示出数据,那在Okhttp如何使用缓存呢?其实很简单,如下: 配置一个Cache既可,其中接收两个参数:一个是缓存 ...
- 【Java基础 项目实例 -- Bank项目2】Account 和 customer 对象
总结: customer.setAccount(account); //引用,日后的account 和 customer.getAccount()的结果始终一致 实验目的 扩展银行项目,添加一个 Cu ...
- Mysql导入Excel数据 日期问题 (Excel 与 MySQL 时间戳格式和日期 互转)
https://blog.csdn.net/ghw455954461/article/details/7247738 今天项目表中需要导入好几w条数据 ,但日期由两个一个是标准时间一个为时间戳,程序中 ...
- flyio 的请求封装
1.安装flyio.js npm install flyio --save-dev 2.在util创建一个fly.js用于封装 import Vue from 'vue' var Fly=requir ...
- org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException
org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException: Listener method ...