QT:图片按钮(改进版)
来源:互联网 发布:淘宝垫付 编辑:程序博客网 时间:2024/06/01 10:41
之前我写过一个可以直接显示图片的Button: http://blog.csdn.net/aaa20090987/article/details/6789380
当时为了方便,直接用QFrame作为它的基类,结果(布局,使用等)十分不方便,
还是老老实实地用 QAbstractButton 作为基类,再用paintEvent来画图吧
//tqt.h#ifndef TQT_H_#define TQT_H_#include <QtGui>#include <QtCore>class PictureButton : public QAbstractButton{Q_OBJECTprivate:QPixmap pixmap;protected:virtual void paintEvent(QPaintEvent *event);virtual QSize sizeHint() const;public:PictureButton(const QString &path, QWidget *parent=0);PictureButton(QWidget *parent = 0);~PictureButton();void setPixmap(const QString &path);};class Widget : public QWidget{Q_OBJECTprivate:QLabel *label;PictureButton *prevButton;PictureButton *nextButton;int num;public:Widget(QWidget *parent = 0);~Widget();public slots:void ClickedPrevButton();void ClickedNextButton();};#endif//tqt.cpp#include "tqt.h"PictureButton::PictureButton(const QString &path, QWidget *parent/* =0 */): QAbstractButton(parent){setPixmap(path);setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);}PictureButton::PictureButton(QWidget *parent /* = 0 */): QAbstractButton(parent){setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);}PictureButton::~PictureButton(){}void PictureButton::paintEvent(QPaintEvent *event){QPainter painter(this);painter.drawPixmap(0, 0, width(), height(), pixmap);}QSize PictureButton::sizeHint() const {return pixmap.size();}void PictureButton::setPixmap(const QString &path){pixmap.load(path);update();}Widget::Widget(QWidget *parent) : QWidget(parent){num = 0;label = new QLabel("0", this);//prev.jpg和next.jpg是当前文件夹中的两张JPG图片prevButton = new PictureButton("prev.jpg", this);nextButton = new PictureButton("next.jpg", this);QHBoxLayout *subLayout = new QHBoxLayout;QVBoxLayout *layout = new QVBoxLayout;subLayout->addWidget(prevButton);subLayout->addWidget(nextButton);layout->addWidget(label);layout->addLayout(subLayout);setLayout(layout);setWindowTitle("Widget");resize(200, 200);connect(prevButton, SIGNAL(clicked()), this, SLOT(ClickedPrevButton()));connect(nextButton, SIGNAL(clicked()), this, SLOT(ClickedNextButton()));}Widget::~Widget(){}void Widget::ClickedPrevButton(){num--;label->setText(QString::number(num));}void Widget::ClickedNextButton(){num++;label->setText(QString::number(num));}//main.cpp#include "tqt3.h"int main(int argc, char *argv[]){QApplication a(argc, argv);Widget w;w.show();return a.exec();}
注意:这个程序是用来研究的(或者说是玩的),如果要在按钮上加图片的话,直接用QToolButton就可以了
- QT:图片按钮(改进版)
- 改进的图片按钮
- 按钮检测(改进版)
- QT 按钮图片
- Qt 图片按钮
- QT实现图片按钮
- QT 图片按钮
- Qt 图片按钮
- QT 按钮图片的设置
- QT 按钮图片的设置
- Qt点击按钮打开图片
- 读写图片(改进)
- QT实现图片按钮(用qss切割图片,或者放三张图片)
- Qt将图片用作按钮的方法
- QT功能1:点击按钮,显示图片
- Qt自定义图片按钮并设置方向
- Qt按钮控件(Button)
- 导航右边按钮按钮(图片/文字)
- Flash Recovery Area空间不足导致数据库不能打开或hang住
- Objective-C中的字符串格式化输出
- Oracle 的 Sql*Plus 常用命令介绍
- SharedPreferences具体使用方法及createPackageContext方法(获取其他应用的共享文件)
- RFT无法输入中文的问题
- QT:图片按钮(改进版)
- c/c++常见面试题,希望能给找工作的朋友一点帮助
- 重写、覆盖、重载、多态几个概念的区别分析
- Architecture Design - 1 What is Architecture
- oracle数据库常用命令的整理
- 最大流Edmonds-Karp算法头文件C++
- (17)XML解析技术
- Linux 内核参数 和 Oracle相关参数调整
- 最大流Edmonds-Karp算法实现文件C++