现在的位置: 首页 > 综合 > 正文

Qt在停靠窗口上添加控件(实现工具箱功能)

2013年08月27日 ⁄ 综合 ⁄ 共 16752字 ⁄ 字号 评论关闭

由于QDockWidget只是提供一个可停靠的地方,接受一个QWidget*类型的形参,如果要添加已有的控件,只要是继承自QWidget的都可添加,如果要添加自定义的控件,应该新建一个类以继承自QWidget然后在该类中设计要添加的控件和布局。该类设计完成后应该作为一个整体当做实参传给addDockWidget即可实现添加自定义窗口为停靠窗口。

Example: 此例子主要以实现一个简单工具箱的布局为目的

//创建一个类继承自QWidget,此处类名为 CToolkit

//头文件内容如下:

#ifndef TOOLKIT_H
#define TOOLKIT_H

#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QButtonGroup>
#include <QSize>

class CToolkit : public QWidget
{
    Q_OBJECT
public:
    explicit CToolkit(QWidget *parent = 0);
    ~CToolkit();
    
signals:
    
public slots:

    
private:

    //basic buttons
    QPushButton * basPotBtn;             //draw pointer
    QPushButton * basLineBtn;              //draw line
    QPushButton * basPolygonaLineBtn;      //draw polygon line
    QPushButton * basArcBtn;               //draw arc
    QPushButton * basCurveBtn;              //draw curve
    QPushButton * basBasselCurveBtn;       //draw bassel curve
    QPushButton * basRectangleBtn;         //draw rectangle
    QPushButton * basRoundRectBtn;         //draw round rectangle
    QPushButton * basCircleBtn;            //draw circle
    QPushButton * basSectorBtn;            //draw sector
    QPushButton * basHalfCirBtn;           //draw half circle
    QPushButton * basPolygonBtn;           //draw polygon
    QPushButton * basEnclosedCurBtn;       //draw closed curve
    QPushButton * basEnclosedBasselCurBtn; //draw closed bassel curve
    QPushButton * basTextBtn;              //draw text
    QPushButton * basPumpBtn;              //draw pump

    //extension buttons
    QPushButton *extPotBtn;                 //draw point
    QPushButton *extBtnBtn;                 //draw button
    QPushButton *extPicBtn;                 //draw picture
    QPushButton *extTreLineBtn;             //draw trend line
    QPushButton *extAlaWndBtn;              //draw alarm window
    QPushButton *extXYTreBtn;               //draw XY trend
    QPushButton *extEveWndBtn;              //draw event window
    QPushButton *extVerRuleBtn;             //draw vertical ruler
    QPushButton *extHorRuleBtn;             //draw horizontal ruler
    QPushButton *extBarPicBtn;              //draw bar picture
    QPushButton *extMenuBtn;                //draw menu
    QPushButton *extRepBtn;                 //draw report

    //UI buttons
    QPushButton *UIPotBtn;                 //draw point
    QPushButton *UIBtnBtn;                 //draw button
    QPushButton *UICheBtn;                 //draw checkbox
    QPushButton *UITextBtn;                //draw textedit
    QPushButton *UIComBtn;                 //draw combobox
    QPushButton *UILstBtn;                 //draw listbox
    QPushButton *UISigBtn;                 //draw siglebox
    QPushButton *UITreeBtn;                //draw treeview
    QPushButton *UICalBtn;                 //draw calender
    QPushButton *UIMulTextBtn;             //draw multify textedit
    QPushButton *UIDateBtn;                //draw datetime
    QPushButton *UIRelBtn;                 //draw  relative datetime
    QPushButton *MulTreeBtn;               //draw multify treeview

private:
    QWidget *m_pBasWidget;
    QWidget *m_pExtWidget;
    QWidget *m_pUIWidget;

private:
    QButtonGroup *m_pBasGropBox;
    QButtonGroup *m_pExtGropBox;
    QButtonGroup *m_pUIGropBox;


public slots:
    int basicGroupBoxClicked(int);
    int extensionGroupBoxClicked(int);
    int UIGroupBoxClicked(int);

public:
    int drawType;     //1 indicate basic type, 2 indicate extension type, 3 indicate UI type


private:
    void createBasicBtns();
    void createUIBtns();
    void createExtensionBtns();
};

#endif // TOOLKIT_H


//实现文件内容如下:

#include "toolkit.h"
#include <QLabel>
#include <QPushButton>
#include <QGridLayout>
#include <QToolBox>

CToolkit::CToolkit(QWidget *parent) :
    QWidget(parent)
{
    createBasicBtns();
    createExtensionBtns();
    createUIBtns();

    drawType = 0;

    QVBoxLayout *mainLayout = new QVBoxLayout;
    QToolBox * toolbox = new QToolBox;
    toolbox->addItem(m_pBasWidget, tr("基本"));
    toolbox->addItem(m_pExtWidget, tr("扩展"));
    toolbox->addItem(m_pUIWidget, tr("UI"));
    mainLayout->addWidget(toolbox);

    this->setLayout(mainLayout);
    this->setMaximumWidth(180);
}

CToolkit::~CToolkit()
{

    //basic buttons
    delete  basPotBtn;             //draw pointer
    delete  basLineBtn;              //draw line
    delete  basPolygonaLineBtn;      //draw polygon line
    delete  basArcBtn;               //draw arc
    delete  basCurveBtn;              //draw curve
    delete  basBasselCurveBtn;       //draw bassel curve
    delete  basRectangleBtn;         //draw rectangle
    delete  basRoundRectBtn;         //draw round rectangle
    delete  basCircleBtn;            //draw circle
    delete  basSectorBtn;            //draw sector
    delete  basHalfCirBtn;           //draw half circle
    delete  basPolygonBtn;           //draw polygon
    delete  basEnclosedCurBtn;       //draw closed curve
    delete  basEnclosedBasselCurBtn; //draw closed bassel curve
    delete  basTextBtn;              //draw text
    delete  basPumpBtn;              //draw pump

    //extension buttons
    delete extPotBtn;                 //draw point
    delete extBtnBtn;                 //draw button
    delete extPicBtn;                 //draw picture
    delete extTreLineBtn;             //draw trend line
    delete extAlaWndBtn;              //draw alarm window
    delete extXYTreBtn;               //draw XY trend
    delete extEveWndBtn;              //draw event window
    delete extVerRuleBtn;             //draw vertical ruler
    delete extHorRuleBtn;             //draw horizontal ruler
    delete extBarPicBtn;              //draw bar picture
    delete extMenuBtn;                //draw menu
    delete extRepBtn;                 //draw report

    //UI buttons
    delete UIPotBtn;                 //draw point
    delete UIBtnBtn;                 //draw button
    delete UICheBtn;                 //draw checkbox
    delete UITextBtn;                //draw textedit
    delete UIComBtn;                 //draw combobox
    delete UILstBtn;                 //draw listbox
    delete UISigBtn;                 //draw siglebox
    delete UITreeBtn;                //draw treeview
    delete UICalBtn;                 //draw calender
    delete UIMulTextBtn;             //draw multify textedit
    delete UIDateBtn;                //draw datetime
    delete UIRelBtn;                 //draw  relative datetime
    delete MulTreeBtn;               //draw multify treeview

    delete m_pBasWidget;
    delete m_pExtWidget;
    delete m_pUIWidget;
}

void CToolkit::createBasicBtns()
{

    m_pBasGropBox = new QButtonGroup;
    if(NULL == m_pBasGropBox)
    {
        return;
    }
    connect(m_pBasGropBox, SIGNAL(buttonClicked(int)), this, SLOT(basicGroupBoxClicked(int)));

    m_pBasWidget = new QWidget();
    if(NULL == m_pBasWidget)
    {
        return;
    }
    //draw pointer
    basPotBtn = new QPushButton(QIcon(tr(":/res/ctrl/BasicCtrl/choice.ico")), tr(""), this);
    basPotBtn->resize(16, 16);
    basPotBtn->setToolTip(tr("指针"));
    //draw line
    basLineBtn = new QPushButton(QIcon(tr(":/res/ctrl/BasicCtrl/line.ico")), tr(""), this);
    basLineBtn->resize(16, 16);
    basLineBtn->setToolTip(tr("直线"));
    //draw polygon line
    basPolygonaLineBtn = new QPushButton(QIcon(tr(":/res/ctrl/BasicCtrl/polygonalline.ico")), tr(""), this);
    basPolygonaLineBtn->resize(16, 16);
    basPolygonaLineBtn->setToolTip(tr("折线"));
    //draw arc
    basArcBtn = new QPushButton(QIcon(tr(":/res/ctrl/BasicCtrl/arc.ico")), tr(""), this);
    basArcBtn->resize(16, 16);
    basArcBtn->setToolTip(tr("弧线"));


    //draw curve
    basCurveBtn = new QPushButton(QIcon(tr(":/res/ctrl/BasicCtrl/curve.ico")), tr(""), this);
    basCurveBtn->resize(16, 16);
    basCurveBtn->setToolTip(tr("曲线"));
    //draw bassel curve
    basBasselCurveBtn = new QPushButton(QIcon(tr(":/res/ctrl/BasicCtrl/Besselcurve.ico")), tr(""), this);
    basBasselCurveBtn->resize(16, 16);
    basBasselCurveBtn->setToolTip(tr("贝塞尔曲线"));
    //draw rectangle
    basRectangleBtn = new QPushButton(QIcon(tr(":/res/ctrl/BasicCtrl/rectangle.ico")), tr(""), this);
    basRectangleBtn->resize(16, 16);
    basRectangleBtn->setToolTip(tr("矩形"));
    //draw round rectangle
    basRoundRectBtn = new QPushButton(QIcon(tr(":/res/ctrl/BasicCtrl/Roundedrectangle.ico")), tr(""), this);
    basRoundRectBtn->resize(16, 16);
    basRoundRectBtn->setToolTip(tr("圆角矩形"));


    //draw circle
    basCircleBtn = new QPushButton(QIcon(tr(":/res/ctrl/BasicCtrl/circle.ico")), tr(""), this);
    basCircleBtn->resize(16, 16);
    basCircleBtn->setToolTip(tr("椭圆"));
    //draw sector
    basSectorBtn = new QPushButton(QIcon(tr(":/res/ctrl/BasicCtrl/sector.ico")), tr(""), this);
    basSectorBtn->resize(16, 16);
    basSectorBtn->setToolTip(tr("扇形"));
    //draw half circle
    basHalfCirBtn = new QPushButton(QIcon(tr(":/res/ctrl/BasicCtrl/halfcircle.ico")), tr(""), this);
    basHalfCirBtn->resize(16, 16);
    basHalfCirBtn->setToolTip(tr("弦"));
    //draw polygon
    basPolygonBtn = new QPushButton(QIcon(tr(":/res/ctrl/BasicCtrl/polygon.ico")), tr(""), this);
    basPolygonBtn->resize(16, 16);
    basPolygonBtn->setToolTip(tr("多边形"));


    //draw closed cur
    basEnclosedCurBtn = new QPushButton(QIcon(tr(":/res/ctrl/BasicCtrl/enclosedcircle.ico")), tr(""), this);
    basEnclosedCurBtn->resize(16, 16);
    basEnclosedCurBtn->setToolTip(tr("封闭曲线"));
    //draw close bassel curve
    basEnclosedBasselCurBtn = new QPushButton(QIcon(tr(":/res/ctrl/BasicCtrl/enclosedbasselcurve.ico")), tr(""), this);
    basEnclosedBasselCurBtn->resize(16, 16);
    basEnclosedBasselCurBtn->setToolTip(tr("封闭贝塞尔曲线"));
    //draw text
    basTextBtn = new QPushButton(QIcon(tr(":/res/ctrl/BasicCtrl/text.ico")), tr(""), this);
    basTextBtn->resize(16, 16);
    basTextBtn->setToolTip(tr("文本"));
    //draw pump
    basPumpBtn = new QPushButton(QIcon(tr(":/res/ctrl/BasicCtrl/pump.ico")), tr(""), this);
    basPumpBtn->resize(16, 16);
    basPumpBtn->setToolTip(tr("管道"));

    QGridLayout *basicLayout = new QGridLayout();
    basicLayout->addWidget(basPotBtn, 0, 0);
    basicLayout->addWidget(basLineBtn, 0, 1);
    basicLayout->addWidget(basPolygonaLineBtn, 0, 2);
    basicLayout->addWidget(basArcBtn, 0, 3);

    basicLayout->addWidget(basCurveBtn, 1, 0);
    basicLayout->addWidget(basBasselCurveBtn, 1, 1);
    basicLayout->addWidget(basRectangleBtn, 1, 2);
    basicLayout->addWidget(basRoundRectBtn, 1, 3);

    basicLayout->addWidget(basCircleBtn, 2, 0);
    basicLayout->addWidget(basSectorBtn, 2, 1);
    basicLayout->addWidget(basHalfCirBtn, 2, 2);
    basicLayout->addWidget(basPolygonBtn, 2, 3);

    basicLayout->addWidget(basEnclosedCurBtn, 3, 0);
    basicLayout->addWidget(basEnclosedBasselCurBtn, 3, 1);
    basicLayout->addWidget(basTextBtn, 3, 2);
    basicLayout->addWidget(basPumpBtn, 3, 3);



    m_pBasGropBox->addButton(basPotBtn);
    m_pBasGropBox->addButton(basLineBtn);
    m_pBasGropBox->addButton(basPolygonaLineBtn);
    m_pBasGropBox->addButton(basArcBtn);

    m_pBasGropBox->addButton(basCurveBtn);
    m_pBasGropBox->addButton(basBasselCurveBtn);
    m_pBasGropBox->addButton(basRectangleBtn);
    m_pBasGropBox->addButton(basRoundRectBtn);

    m_pBasGropBox->addButton(basCircleBtn);
    m_pBasGropBox->addButton(basSectorBtn);
    m_pBasGropBox->addButton(basHalfCirBtn);
    m_pBasGropBox->addButton(basPolygonBtn);

    m_pBasGropBox->addButton(basEnclosedCurBtn);
    m_pBasGropBox->addButton(basEnclosedBasselCurBtn);
    m_pBasGropBox->addButton(basTextBtn);
    m_pBasGropBox->addButton(basPumpBtn);


    m_pBasWidget->setLayout(basicLayout);
}

void CToolkit::createUIBtns()
{
    m_pUIGropBox = new QButtonGroup;
    if(NULL == m_pUIGropBox)
    {
        return;
    }
    connect(m_pUIGropBox, SIGNAL(buttonClicked(int)), this, SLOT(UIGroupBoxClicked(int)));

    m_pUIWidget = new QWidget();
    if(NULL == m_pUIWidget)
    {
        return;
    }
    //draw pointer
    UIPotBtn = new QPushButton(QIcon(tr(":/res/ctrl/UICtrl/choice.ico")), tr(""), this);
    UIPotBtn->resize(16, 16);
    UIPotBtn->setToolTip(tr("指针"));
    //draw button
    UIBtnBtn = new QPushButton(QIcon(tr(":/res/ctrl/UICtrl/button.ico")), tr(""), this);
    UIBtnBtn->resize(16, 16);
    UIBtnBtn->setToolTip(tr("按钮"));
    //draw checkbox
    UICheBtn = new QPushButton(QIcon(tr(":/res/ctrl/UICtrl/checkbox.ico")), tr(""), this);
    UICheBtn->resize(16, 16);
    UICheBtn->setToolTip(tr("复选框"));
    //draw textedit
    UITextBtn = new QPushButton(QIcon(tr(":/res/ctrl/UICtrl/textedit.ico")), tr(""), this);
    UITextBtn->resize(16, 16);
    UITextBtn->setToolTip(tr("文本框"));


    //draw combobox
    UIComBtn = new QPushButton(QIcon(tr(":res/ctrl/UICtrl/combobox.ico")), tr(""), this);
    UIComBtn->resize(16, 16);
    UIComBtn->setToolTip(tr("复选框"));
    //draw listbox
    UILstBtn = new QPushButton(QIcon(tr(":/res/ctrl/UICtrl/listbox.ico")), tr(""), this);
    UILstBtn->resize(16, 16);
    UILstBtn->setToolTip(tr("列表框"));
    //draw singlebox
    UISigBtn = new QPushButton(QIcon(tr(":/res/ctrl/UICtrl/singlebox.ico")), tr(""), this);
    UISigBtn->resize(16, 16);
    UISigBtn->setToolTip(tr("单选框"));
    //draw treeview
    UITreeBtn = new QPushButton(QIcon(tr(":/res/ctrl/UICtrl/treeview.ico")), tr(""), this);
    UITreeBtn->resize(16, 16);
    UITreeBtn->setToolTip(tr("树视图"));


    //draw calender
    UICalBtn = new QPushButton(QIcon(tr(":/res/ctrl/UICtrl/calender.ico")), tr(""), this);
    UICalBtn->resize(16, 16);
    UICalBtn->setToolTip(tr("日历"));
    //draw mulify textedit
    UIMulTextBtn = new QPushButton(QIcon(tr(":/res/ctrl/UICtrl/mulitfunctionaltextedit.ico")), tr(""), this);
    UIMulTextBtn->resize(16, 16);
    UIMulTextBtn->setToolTip(tr("复杂文本框"));
    //draw datetime
    UIDateBtn = new QPushButton(QIcon(tr(":/res/ctrl/UICtrl/dateandtime.ico")), tr(""), this);
    UIDateBtn->resize(16, 16);
    UIDateBtn->setToolTip(tr("日期时间"));
    //draw relative datatime
    UIRelBtn = new QPushButton(QIcon(tr(":/res/ctrl/UICtrl/relativedateandtime.ico")), tr(""), this);
    UIRelBtn->resize(16, 16);
    UIRelBtn->setToolTip(tr("相对时间"));


    //draw mulify treeview
    MulTreeBtn = new QPushButton(QIcon(tr(":/res/ctrl/UICtrl/multifunctionaltreeview.ico")), tr(""), this);
    MulTreeBtn->resize(16, 16);
    MulTreeBtn->setToolTip(tr("多功能树视图"));

    QGridLayout *UILayout = new QGridLayout();
    UILayout->addWidget(UIPotBtn, 0, 0);
    UILayout->addWidget(UIBtnBtn, 0, 1);
    UILayout->addWidget(UICheBtn, 0, 2);
    UILayout->addWidget(UITextBtn, 0, 3);

    UILayout->addWidget(UIComBtn, 1, 0);
    UILayout->addWidget(UILstBtn, 1, 1);
    UILayout->addWidget(UISigBtn, 1, 2);
    UILayout->addWidget(UITreeBtn, 1, 3);

    UILayout->addWidget(UICalBtn, 2, 0);
    UILayout->addWidget(UIMulTextBtn, 2, 1);
    UILayout->addWidget(UIDateBtn, 2, 2);
    UILayout->addWidget(UIRelBtn, 2, 3);

    UILayout->addWidget(MulTreeBtn, 3, 0);

    m_pUIGropBox->addButton(UIPotBtn);
    m_pUIGropBox->addButton(UIBtnBtn);
    m_pUIGropBox->addButton(UICheBtn);
    m_pUIGropBox->addButton(UITextBtn);

    m_pUIGropBox->addButton(UIComBtn);
    m_pUIGropBox->addButton(UILstBtn);
    m_pUIGropBox->addButton(UISigBtn);
    m_pUIGropBox->addButton(UITreeBtn);

    m_pUIGropBox->addButton(UICalBtn);
    m_pUIGropBox->addButton(UIMulTextBtn);
    m_pUIGropBox->addButton(UIDateBtn);
    m_pUIGropBox->addButton(UIRelBtn);

    m_pUIGropBox->addButton(MulTreeBtn);

    m_pUIWidget->setLayout(UILayout);
    //this->setLayout(UILayout);
}

void CToolkit::createExtensionBtns()
{
    m_pExtGropBox = new QButtonGroup;
    if(NULL == m_pExtGropBox)
    {
        return;
    }
    connect(m_pExtGropBox, SIGNAL(buttonClicked(int)), this, SLOT(extensionGroupBoxClicked(int)));

    m_pExtWidget = new QWidget();
    if(NULL == m_pExtWidget)
    {
        return;
    }
    //draw pointer
    extPotBtn = new QPushButton(QIcon(tr(":/res/ctrl/ExtCtrl/choice.ico")), tr(""), this);
    extPotBtn->resize(16, 16);
    extPotBtn->setToolTip(tr("指针"));
    //draw button
    extBtnBtn = new QPushButton(QIcon(tr(":/res/ctrl/ExtCtrl/button.ico")), tr(""), this);
    extBtnBtn->resize(16, 16);
    extBtnBtn->setToolTip(tr("按钮"));
    //draw picture
    extPicBtn = new QPushButton(QIcon(tr(":/res/ctrl/ExtCtrl/picturecontrol.ico")), tr(""), this);
    extPicBtn->resize(16, 16);
    extPicBtn->setToolTip(tr("图像"));
    //draw trend line
    extTreLineBtn = new QPushButton(QIcon(tr(":/res/ctrl/ExtCtrl/trendline.ico")), tr(""), this);
    extTreLineBtn->resize(16, 16);
    extTreLineBtn->setToolTip(tr("趋势曲线"));


    //draw alarm window
    extAlaWndBtn = new QPushButton(QIcon(tr(":res/ctrl/ExtCtrl/alarmwindow.ico")), tr(""), this);
    extAlaWndBtn->resize(16, 16);
    extAlaWndBtn->setToolTip(tr("报警窗"));
    //draw XY trend
    extXYTreBtn = new QPushButton(QIcon(tr(":/res/ctrl/ExtCtrl/XYtrendline.ico")), tr(""), this);
    extXYTreBtn->resize(16, 16);
    extXYTreBtn->setToolTip(tr("XY曲线"));
    //draw event window
    extEveWndBtn = new QPushButton(QIcon(tr(":/res/ctrl/ExtCtrl/eventwindow.ico")), tr(""), this);
    extEveWndBtn->resize(16, 16);
    extEveWndBtn->setToolTip(tr("事件窗"));
    //draw vertical ruler
    extVerRuleBtn = new QPushButton(QIcon(tr(":/res/ctrl/ExtCtrl/verticaldivilingrule.ico")), tr(""), this);
    extVerRuleBtn->resize(16, 16);
    extVerRuleBtn->setToolTip(tr("垂直标尺"));


    //draw horizontal ruler
    extHorRuleBtn = new QPushButton(QIcon(tr(":/res/ctrl/ExtCtrl/horizontaldivilingrule.ico")), tr(""), this);
    extHorRuleBtn->resize(16, 16);
    extHorRuleBtn->setToolTip(tr("水平标尺"));
    //draw bar picture
    extBarPicBtn = new QPushButton(QIcon(tr(":/res/ctrl/ExtCtrl/report.ico")), tr(""), this);
    extBarPicBtn->resize(16, 16);
    extBarPicBtn->setToolTip(tr("棒图"));
    //draw relative datatime
    extRepBtn = new QPushButton(QIcon(tr(":/res/ctrl/ExtCtrl/barpicture.ico")), tr(""), this);
    extRepBtn->resize(16, 16);
    extRepBtn->setToolTip(tr("报表"));
    //draw menu
    extMenuBtn = new QPushButton(QIcon(tr(":/res/ctrl/ExtCtrl/menu.ico")), tr(""), this);
    extMenuBtn->resize(16, 16);
    extMenuBtn->setToolTip(tr("菜单"));


    QGridLayout *extLayout = new QGridLayout();
    extLayout->addWidget(extPotBtn, 0, 0);
    extLayout->addWidget(extBtnBtn, 0, 1);
    extLayout->addWidget(extPicBtn, 0, 2);
    extLayout->addWidget(extTreLineBtn, 0, 3);

    extLayout->addWidget(extAlaWndBtn, 1, 0);
    extLayout->addWidget(extXYTreBtn, 1, 1);
    extLayout->addWidget(extEveWndBtn, 1, 2);
    extLayout->addWidget(extVerRuleBtn, 1, 3);

    extLayout->addWidget(extHorRuleBtn, 2, 0);
    extLayout->addWidget(extRepBtn, 2, 1);
    extLayout->addWidget(extBarPicBtn, 2, 2);
    extLayout->addWidget(extMenuBtn, 2, 3);

    m_pExtGropBox->addButton(extPotBtn);
    m_pExtGropBox->addButton(extBtnBtn);
    m_pExtGropBox->addButton(extPicBtn);
    m_pExtGropBox->addButton(extTreLineBtn);

    m_pExtGropBox->addButton(extAlaWndBtn);
    m_pExtGropBox->addButton(extXYTreBtn);
    m_pExtGropBox->addButton(extEveWndBtn);
    m_pExtGropBox->addButton(extVerRuleBtn);

    m_pExtGropBox->addButton(extHorRuleBtn);
    m_pExtGropBox->addButton(extRepBtn);
    m_pExtGropBox->addButton(extBarPicBtn);
    m_pExtGropBox->addButton(extMenuBtn);


    m_pExtWidget->setLayout(extLayout);
    //this->setLayout(UILayout);
}


int CToolkit::basicGroupBoxClicked(int id)
{
    drawType = 1;
    QList<QAbstractButton *> buttons = m_pBasGropBox->buttons();
    foreach (QAbstractButton *button, buttons)
    {
        if (m_pBasGropBox->button(id) != button)
            button->setChecked(false);
        else
        {
            return id;
        }
    }
    return 0;
}

int CToolkit::extensionGroupBoxClicked(int id)
{ 
    drawType = 2;
    QList<QAbstractButton *> buttons = m_pExtGropBox->buttons();
    foreach (QAbstractButton *button, buttons)
    {
        if (m_pExtGropBox->button(id) != button)
            button->setChecked(false);
        else
        {
            return id;
        }
    }
    return 0;
}

int CToolkit::UIGroupBoxClicked(int id)
{
    drawType = 3;
    QList<QAbstractButton *> buttons = m_pUIGropBox->buttons();
    foreach (QAbstractButton *button, buttons)
    {
        if (m_pUIGropBox->button(id) != button)
            button->setChecked(false);
        else
        {
            return id;
        }
    }
    return 0;
}

//在main.cpp中即可实现停靠窗口

#include "mainwindow.h"
#include "toolkit.h"
#include <QApplication>
#include <QDockWidget>
#include <QTextEdit>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QMainWindow *mainWnd = new QMainWindow;
    QTextEdit *txtEdit = new QTextEdit;
    mainWnd->setCentralWidget(txtEdit);

    CToolkit *pToolkit = new CToolkit;
    if(NULL == pToolkit)
    {
        return 1;
    }
    QDockWidget *toolkitDock = new QDockWidget();
    if(NULL == toolkitDock)
    {
        return 1;
    }
    toolkitDock->setWindowTitle("工具箱");
    toolkitDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
    toolkitDock->setWidget(pToolkit);
    mainWnd->addDockWidget(Qt::LeftDockWidgetArea, toolkitDock);


    mainWnd->show();
    
    return a.exec();
}


抱歉!评论已关闭.