在編輯QComboBox的時候,看到編輯組合框,看到這種窗口挺好,
想自己試試,一上手才發現自己有多菜
好在最後還是實現了
#ifndef COMBOBOXEDITDIALOG_H
#define COMBOBOXEDITDIALOG_H
#include <QDialog>
class QToolButton;
class QListWidget;
class QTreeWidget;
class ComboBoxEditDialog : public QDialog
{
Q_OBJECT
public:
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("屬性>>"));
}
}
歡迎拍磚