1.实现自定义的按钮类:
QPushButton可以设置图标:
void setIcon(const QIcon & icon)
如按钮btn对象:
btn.setIcon(QIcon("/icons/a.png")); // 匿名对象
btn.setGeometry(0, 0, 200, 200);
btn.setIconSize(btn.size());
自定义一个按钮类, 创建对象可以指定图标文件.
#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QIcon>
class MyBtn : public QPushButton {
public:
MyBtn(QString file="", QWidget *parent = NULL);
~MyBtn();
};
MyBtn::MyBtn(QString file, QWidget *parent) : QPushButton(parent)
{
if (!file.isEmpty())
this->setIcon(QIcon(file));
//构造函数的调用过程: MyBtn(...) --> QpushButton(...) --> QabstractButton(...) --> QWidget(parent)
}
MyBtn::~MyBtn()
{
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget wid;
MyBtn btn("/icons/a.png", &wid);
btn.setGeometry(10, 10, 100, 80);
wid.setGeometry(10, 10, 640, 480);
wid.show();
return a.exec();
}
自定义的按钮类写好后, 完全可以像QPushButton 一样的用法.
class MyWid : public QWidget {
private:
MyBtn *btn;
public:
MyWid();
~MyWid();
};
MyWid::MyWid() {
btn = new MyBtn(“/icons/b.png”, this);
btn->setGeometry(10, 10, 240, 160);
}
MyWid::~MyWid() {
delete btn;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWid wid;
wid.show();
return a.exec();
}
2. 实现自定义的窗口类.
Qlabel 是标签, 可以显示文本, 也可以显示图像
void setPixmap(const QPixmap &);
void setScaledContents(bool);
设置 是否打开图像缩放的功能.
自定义一个窗口类,每个窗口对象都有一幅图像,图像文件在创建对象时指定
#include <QApplication>
#include <QWidget>
#include <QLabel>
class MyWid : public QWidget {
private:
QLabel *label;
public:
MyWid(QString file);
~MyWid();
};
MyWid::MyWid(QString file)
{
label = new QLabel(this);
label->setPixmap(QPixmap(file));
label->setScaledContents(true);
label->resize(this->size());
}
MyWid::~MyWid()
{
delete label;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWid wid("/icons/5.jpg"), wid2("/icons/d.png");
wid.show();
wid2.show();
return a.exec();
}
这样封装出来的窗口对象无法再做别的窗口对象的子窗口.
创建出来的窗口对象作别的窗口对象的子窗口:
#include <QApplication>
#include <QWidget>
#include <QLabel>
class MyWid : public QWidget {
private:
QLabel *label;
public:
MyWid(QString file, QWidget *parent = NULL);
~MyWid();
};
MyWid::MyWid(QString file, QWidget *parent) : QWidget(parent)
{
resize(320, 240);
label = new QLabel(this);
label->setPixmap(QPixmap(file));
label->setScaledContents(true);
label->resize(this->size());
}
MyWid::~MyWid()
{
delete label;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget wid;
wid.setGeometry(0, 0, 800, 600);
MyWid wid2("/icons/5.jpg", &wid);
MyWid wid3("/icons/d.png", &wid);
wid3.setGeometry(320, 0, 320, 240);
wid.show();
return a.exec();
}