QT 代码布局,控件添加下拉菜单
最终实现:
.h文件:
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget>
#include <QPushButton>
#include <QToolButton>
#include <QMenu>
#include <QVBoxLayout> //垂直布局
#include <QHBoxLayout> //水平布局
#include <QGridLayout> //栅格布局
class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget(QWidget *parent = 0);
~MyWidget();
void init();
public slots:
void doPrint();
private:
};
#endif // MYWIDGET_H
.cpp文件:
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
{
this->resize(600,480);
QGridLayout *grid = new QGridLayout(this);
grid->setSpacing(6);
grid->setContentsMargins(11, 11, 11, 11);
QVBoxLayout *vboxLayout = new QVBoxLayout;
QVBoxLayout *vboxLayout2 = new QVBoxLayout;
QLineEdit *name = new QLineEdit;
name->setText("name");
name->setAlignment(Qt::AlignHCenter);
QLineEdit *password = new QLineEdit;
password->setText("password");
password->setEchoMode(QLineEdit::Password);
password->setAlignment(Qt::AlignHCenter);
//为Tool控件添加下拉菜单
QToolButton *toolButton = new QToolButton;
QMenu *menu = new QMenu();
menu->addAction("aaa",this,SLOT(doPrint()));
menu->addAction("bbb",this,SLOT(doPrint()));
menu->addAction("ccc",this,SLOT(doPrint()));
toolButton->setMinimumSize(QSize(100,50));
toolButton->setMenu(menu);
toolButton->setPopupMode(QToolButton::InstantPopup);
vboxLayout->addWidget(toolButton);
vboxLayout->addWidget(name);
vboxLayout->addWidget(password);
vboxLayout2->addLayout(vboxLayout);
QHBoxLayout *hboxLayout = new QHBoxLayout;
QPushButton *yesButton = new QPushButton;
QPushButton *noButton = new QPushButton;
yesButton->setText("yes");
noButton->setText("no");
hboxLayout->addWidget(yesButton);
hboxLayout->addWidget(noButton);
vboxLayout->addLayout(hboxLayout);
grid->addLayout(vboxLayout2,0,0,1,1);
}
MyWidget::~MyWidget()
{
}
void MyWidget::doPrint()
{
QAction *action = (QAction *)this->sender();
if(action->text()=="aaa")
qDebug()<<"aaa";
if(action->text()=="bbb")
qDebug()<<"bbb";
if(action->text()=="ccc")
qDebug()<<"ccc";
}