都有代码的形式来实现,会比较直观。
- 觉得重要的或者难懂的都已注释的形式标注了出来
示例如下:
//widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QLabel>
#include <QTextBrowser> //文本浏览器
#include <QCalendarWidget> //日历
#include <QDate>
#include <QLCDNumber> //七段数码管
#include <QProgressBar> //进度条
class Widget : public QWidget
{
Q_OBJECT
public slots:
void showDate(QDate);
void update_value(void);
public:
Widget(QWidget *parent = 0);
~Widget();
private:
QLabel *lb_text; //文本标签
QLabel *lb_pix; //图片标签
QLabel *lb_gif; //动画标签
QTextBrowser *tbrowser;
QCalendarWidget *caw;
QLCDNumber *lcd;
QProgressBar *pbr;
};
#endif // WIDGET_H
//widget.cpp
#include "widget.h"
#include <QVBoxLayout>
#include <QMovie>
#include <QTimer>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
/*标签*/
lb_text = new QLabel("标签测试");
lb_text->setAlignment(Qt::AlignCenter); //对齐方式为居中对齐
lb_pix = new QLabel("我是图片");
lb_pix->setMinimumSize(10, 10); //能缩放到的最小单元
lb_pix->setScaledContents(true); //自动缩放显示
lb_pix->setPixmap(QPixmap("E:\\QT\\project\\day\\day2\\picture\\3.gif"));
lb_gif = new QLabel("我是动画");
QMovie *m = new QMovie("E:\\QT\\project\\day\\day2\\output\\1.gif");
lb_gif->setMovie(m);
m->start();
/*文本浏览器(html)*/
tbrowser = new QTextBrowser;
tbrowser->setText("<!DOCTYPE html>\
<html>\
<head>\
<meta charset=\"utf-8\">\
<title>runoob.com</title>\
</head>\
<body>\
<h1 >AAAAAAAA</h1>\
<p style=\"background-color:rgb(255,0,0)\">BBBBBBBBB</p>\
</body>\
</html>");
/*日历窗口*/
caw = new QCalendarWidget;
/*七段数码管*/
lcd = new QLCDNumber;
lcd->setMinimumHeight(50);
lcd->display(250); //显示数字
/*进度条*/
pbr = new QProgressBar;
pbr->setValue(60);
QVBoxLayout *vbox = new QVBoxLayout;
vbox->addWidget(pbr);
vbox->addWidget(lcd);
vbox->addWidget(caw);
vbox->addWidget(tbrowser);
vbox->addWidget(lb_text);
vbox->addWidget(lb_pix);
vbox->addWidget(lb_gif);
setLayout(vbox);
connect(caw, SIGNAL(clicked(QDate)), this, SLOT(showDate(QDate)));
QTimer *t = new QTimer;
connect(t, SIGNAL(timeout()), this, SLOT(update_value()));
t->start(100);
}
//进度条数值增加
void Widget::update_value(void)
{
static int data = 0;
lcd->display(data);
pbr->setValue(data);
data++;
if(data == 100)
data = 0;
}
void Widget::showDate(QDate d)
{
lb_text->setText(d.toString());
}
Widget::~Widget()
{
}
//main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
- 亲测过的,绝对正确,不用再改了:
- 运行结果如下: