QComboBox 编辑组合框

来源:互联网 发布:电子相册软件app软件 编辑:程序博客网 时间:2024/05/17 00:50

在编辑QComboBox的时候,看到编辑组合框,看到这种窗口挺好,

想自己试试,一上手才发现自己有多菜

好在最后还是实现了

 

 

#ifndef COMBOBOXEDITDIALOG_H#define COMBOBOXEDITDIALOG_H#include <QDialog>class QToolButton;class QListWidget;class QTreeWidget;class ComboBoxEditDialog : public QDialog{    Q_OBJECTpublic:    explicit ComboBoxEditDialog(QWidget *parent = 0);signals:public slots:   void switchState();private:    void init();private:    QListWidget *m_listWidget;    QTreeWidget *m_treeWidget;    QToolButton *m_addBtn;    QToolButton *m_redBtn;    QToolButton *m_upBtn;    QToolButton *m_downBtn;    QPushButton *m_attriBtn;    QWidget *rightWidget;};#endif // COMBOBOXEDITDIALOG_H


#include "comboboxeditdialog.h"#include <QtGui>ComboBoxEditDialog::ComboBoxEditDialog(QWidget *parent) :    QDialog(parent){    init();}void ComboBoxEditDialog::init(){    m_listWidget = new QListWidget;    m_treeWidget = new QTreeWidget;    m_treeWidget->setColumnCount(2);    m_treeWidget->setHeaderLabels(QStringList()<<"attribute"<<"value");;    m_addBtn = new QToolButton();    m_addBtn->setIcon(QIcon(":/pics/plus-16.png"));    m_redBtn = new QToolButton();    m_redBtn->setIcon(QIcon(":/pics/minus-16.png"));    m_upBtn  = new QToolButton();    m_upBtn->setIcon(QIcon(":/pics/up.png"));    m_downBtn= new QToolButton();    m_downBtn->setIcon(QIcon(":/pics/down.png"));    m_attriBtn = new QPushButton("属性<<");    connect(m_attriBtn,SIGNAL(clicked()),this,SLOT(switchState()));    QHBoxLayout *btnLayout1 = new QHBoxLayout();    btnLayout1->addWidget(m_addBtn,-1,Qt::AlignLeft);    btnLayout1->addWidget(m_redBtn,-1,Qt::AlignLeft);    btnLayout1->setContentsMargins(0,0,0,0);    btnLayout1->setSpacing(0);    btnLayout1->addStretch(10);    btnLayout1->addWidget(m_upBtn,-1,Qt::AlignHCenter);    btnLayout1->addWidget(m_downBtn,-1,Qt::AlignHCenter);    btnLayout1->addStretch(10);    btnLayout1->addWidget(m_attriBtn,-1,Qt::AlignRight);    QVBoxLayout *leftUpLayout = new QVBoxLayout();    leftUpLayout->addWidget(m_listWidget);    leftUpLayout->addLayout(btnLayout1);    leftUpLayout->setContentsMargins(0,0,0,0);    QWidget *leftUpWidget = new QWidget();    leftUpWidget->setLayout(leftUpLayout);    leftUpWidget->setContentsMargins(0,0,0,0);    rightWidget = new QWidget();    QVBoxLayout *rightLayout = new QVBoxLayout();    rightLayout->addWidget(m_treeWidget);    rightLayout->setContentsMargins(0,0,0,0);    rightLayout->setSpacing(0);    rightWidget->hide();    rightWidget->setLayout(rightLayout);    QSplitter* splitter = new QSplitter(Qt::Horizontal);    splitter->addWidget(leftUpWidget);    splitter->addWidget(rightWidget);    QDialogButtonBox *box =  new QDialogButtonBox();    box->addButton("确定",QDialogButtonBox::AcceptRole);    box->addButton("取消",QDialogButtonBox::RejectRole);    QFrame *lineWidget = new QFrame();    lineWidget->setFrameShape(QFrame::HLine);    lineWidget->setFrameShadow(QFrame::Sunken);    QVBoxLayout *mainLayout = new QVBoxLayout();    mainLayout->addWidget(splitter);    mainLayout->addWidget(lineWidget);    mainLayout->addWidget(box);    this->setLayout(mainLayout);    this->resize(500,300);}void ComboBoxEditDialog::switchState(){    if(rightWidget->isVisible())    {        rightWidget->hide();        m_attriBtn->setText(tr("属性<<"));    }else    {        rightWidget->show();        m_attriBtn->setText(tr("属性>>"));    }}

欢迎拍砖
原创粉丝点击