復(fù)制項(xiàng)目[ t_03 ]匿乃,命名為 [ t_04 ]
1、先把各個(gè)按鈕的頭文件引入到mywidget.h中香缺!
//引入各種按鈕的頭文件
#include <dpushbutton.h> //--->常用
#include <dlinkbutton.h>
#include <dtextbutton.h>
#include <dswitchbutton.h>
#include <dimagebutton.h>
#include <ddialog.h>
2奥额、聲明變量
private:
DPushButton * pushbutton;
DLinkButton * linkbutton;
DTextButton * textbutton;
DSwitchButton * switchbutton;
DImageButton * dimagebutton;
3苫幢、分配內(nèi)存(不恰當(dāng)?shù)氖菍?shí)例化)
pushbutton = new DPushButton (this);
linkbutton = new DLinkButton("這是link按鈕") ; //這兩個(gè)要在構(gòu)造的時(shí)候指定文本內(nèi)容
textbutton = new DTextButton("這是text按鈕",this) ;
switchbutton = new DSwitchButton (this);
dimagebutton = new DImageButton(this);
最后運(yùn)行效果如下
這個(gè)就讓人很難受了,都在一塊了垫挨!解決這個(gè)問(wèn)題有兩個(gè)方法韩肝,其中一個(gè)是像上一篇的DLabel一樣,使用move()固定位置九榔。但是這種方法太死板哀峻,當(dāng)窗口大小改變的時(shí)候,按鈕位置不會(huì)改變哲泊,會(huì)導(dǎo)致布局較為難看剩蟀!所以說(shuō),布局切威,我們使用第二種方法育特,使用布局管理!
QVBoxLayout --- 垂直布局
想使用QVBoxLayout先朦,那么我們還要在項(xiàng)目的pro中加入 QT += widgets缰冤,具體如下:
然后再在mywidget.h中加入 QHBoxLayout的頭文件
#include <QVBoxLayout>
水平布局差不多,V改成大寫(xiě)的H就是了[ V:垂直 | H:水平 ]
繼續(xù):
利用addWidget() 添加鍵鈕到布局管理器中喳魏!
固定按鈕的代碼如下:
vboxlayout = new QVBoxLayout(this);
vboxlayout->addWidget(pushbutton);
vboxlayout->addWidget(linkbutton);
vboxlayout->addWidget(textbutton);
vboxlayout->addWidget(switchbutton);
vboxlayout->addWidget(dimagebutton);
最后運(yùn)行效果圖
是不是解決問(wèn)題了C藿!
現(xiàn)在是不是很開(kāi)心4滩省C灾!!哈哈
開(kāi)心太早了创倔,有沒(méi)有發(fā)現(xiàn)問(wèn)題三热,為什么只有四個(gè)按鈕,其它的一個(gè)了三幻??呐能?
為了解決這個(gè)問(wèn)題念搬,我們給沒(méi)有文字的按鈕(dimagebutton 這個(gè)要加圖片)加文本抑堡,看看怎么回事!
修改如下
pushbutton = new DPushButton (this);
pushbutton->setText("這是push按鈕");
linkbutton = new DLinkButton("這是link按鈕") ; //這兩個(gè)要在構(gòu)造的時(shí)候指定文本內(nèi)容
textbutton = new DTextButton("這是text按鈕",this) ;
switchbutton = new DSwitchButton (this); // switchbutton 不能加文本
dimagebutton = new DImageButton(this);
dimagebutton->setNormalPic("/home/sea/Desktop/1.jpg"); //這兒寫(xiě)指定圖片文件的路徑
最后運(yùn)行效果圖
好了朗徊,一些有用的按鈕介紹完了 [ 有人就要說(shuō)了首妖,光有按鈕,我點(diǎn)它爷恳,它沒(méi)有反應(yīng)啊有缆,這讓人難受啊温亲!不要難受棚壁,我在后面會(huì)穿插著講,現(xiàn)在主要是先知道有哪些控件栈虚。我很快就會(huì)講袖外,我保證 ! ]
完整 mywidget.h
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget>
//引入各種按鈕的頭文件
#include <dpushbutton.h> //--->常用
#include <dlinkbutton.h>
#include <dtextbutton.h>
#include <dswitchbutton.h>
#include <dimagebutton.h>
#include <QVBoxLayout>
DWIDGET_USE_NAMESPACE
class MyWidget : public QWidget
{
Q_OBJECT
public:
explicit MyWidget(QWidget *parent = 0);
private:
DPushButton * pushbutton;
DLinkButton * linkbutton;
DTextButton * textbutton;
DSwitchButton * switchbutton;
DImageButton * dimagebutton;
QVBoxLayout * vboxlayout;
signals:
public slots:
};
#endif // MYWIDGET_H
完整 mywidget.cpp
#include "mywidget.h"
MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{
pushbutton = new DPushButton (this);
pushbutton->setText("這是push按鈕");
linkbutton = new DLinkButton("這是link按鈕") ; //這兩個(gè)要在構(gòu)造的時(shí)候指定文本內(nèi)容
textbutton = new DTextButton("這是text按鈕",this) ;
switchbutton = new DSwitchButton (this); // switchbutton 不能加文本
dimagebutton = new DImageButton(this);
dimagebutton->setNormalPic("/home/sea/Desktop/1.jpg");
vboxlayout = new QVBoxLayout(this);
vboxlayout->addWidget(pushbutton);
vboxlayout->addWidget(linkbutton);
vboxlayout->addWidget(textbutton);
vboxlayout->addWidget(switchbutton);
vboxlayout->addWidget(dimagebutton);
}