Qt中不规则窗体和部件的实现
来源:互联网 发布:mac修改输入法快捷键 编辑:程序博客网 时间:2024/06/05 16:49
Qt中不规则窗体和部件的实现,不管是窗体还是部件,都是从QWidget派生而来的,所以它们的原理是一样的,都是设置部件的背景色或者按钮图标等为一个图像A,然后设置此部件的掩码为另一个图像B,这个图像B经过位与运算后,得到不规则的图像,这就行了下面,是一个简单的示例:
form.h:
form.cpp:
toolbutton.h:
toolbutton.cpp:
main.cpp:
form.h:
#ifndef FORM_H
#define FORM_H
#include <QtGui/QWidget>
class Form : public QWidget
{
Q_OBJECT
public:
Form();
~Form();
};
#endif
form.cpp:
#include <QtGui/QPixmap>
#include <QtGui/QBitmap>
#include "toolbutton.h"
#include "form.h"
Form::Form()
{
QPalette p = palette();
QPixmap img("a.png");
QBitmap mask("mask.png");
p.setBrush(QPalette::Window, QBrush(img));
setPalette(p);
setMask(mask);
setWindowFlags(Qt::FramelessWindowHint);
resize(600, 400);
ToolButton *button = new ToolButton(this);
button->move(200, 200);
}
Form::~Form()
{
}
toolbutton.h:
#ifndef TOOLBUTTON_H
#define TOOLBUTTON_H
#include <QtGui/QToolButton>
class ToolButton : public QToolButton
{
Q_OBJECT
public:
ToolButton(QWidget *parent=0);
~ToolButton();
};
#endif
toolbutton.cpp:
#include <QtGui/QPixmap>
#include <QtGui/QBitmap>
#include "toolbutton.h"
ToolButton::ToolButton(QWidget *parent)
: QToolButton(parent)
{
/*
// 如果是非按钮类部件,则使用此段代码
QPalette p = palette();
p.setBrush(QPalette::Button, QBrush(QPixmap("toolbutton.png")));
setPalette(p);
/*/
// 如果是按钮类部件,则使用此段代码
setIcon(QIcon("toolbutton.png"));
setIconSize(QSize(48, 48));
//*********************************/
setMask(QBitmap("toolbutton_mask.png"));
setFixedSize(48, 48);
}
ToolButton::~ToolButton()
{
}
main.cpp:
#include <QtGui/QApplication>
#include "form.h"
int main(int argc, char **argv)
{
QApplication app(argc, argv);
Form form;
form.show();
return app.exec();
}
[ 此贴被XChinux在2007-08-07 00:25重新编辑 ]
小图 | 大图图片
FROM: http://www.qtcn.org/bbs/read.php?tid=8681
0 0
- Qt中不规则窗体和部件的实现
- Qt中不规则窗体和部件的实现
- Qt中不规则窗体和部件的实现
- Qt中不规则窗体和部件的实现
- QT中不规则窗体和部件的实现
- Qt中不规则窗体和部件的实现
- Qt中不规则窗体和部件的实现
- Qt 不规则窗体的实现
- Qt不规则窗体的实现
- Qt不规则窗体的实现
- QT实现不规则窗体和透明窗体
- QT实现不规则窗体和透明窗体
- QT实现不规则窗体和透明窗体
- QT实现不规则窗体和透明窗体
- QT实现不规则窗体
- QT实现不规则窗体
- QT实现不规则窗体
- QT实现不规则窗体
- 3个数和为0
- 用Qt实现窗体的无边框、可移动、透明不规则显示(需背景透明的图片)
- Android之Android Studio--Gradle多渠道打包
- oracle存储过程报"无效的列索引"的错误
- Spring之HelloWorld
- Qt中不规则窗体和部件的实现
- 架构之路(3) :单元测试
- 散列表查找性能分析总结
- 【第二章】 IoC 之 2.1 IoC基础 ——跟我学Spring3
- 好莱坞科幻背景(c语言)
- [iOS]git管理工具Sourcetree使用之提交项目到远程仓库(傻瓜式图文教程)
- android 源代码在线查看和索引
- 互联网金融
- delphi 使用TDatabase连接 sql server的方法