您的位置:首页 > 编程语言 > Qt开发

QT对话框实现

2016-06-30 17:59 447 查看
模态对话框的实现:

1、效果:



2、头文件modedialog.h:

#ifndef MODEDIALOG_H
#define MODEDIALOG_H
#include <QRadioButton>
#include <QLabel>
#include <QDialog>
#include <QButtonGroup>
#include <QPushButton>
class ModeDialog:public QDialog
{
Q_OBJECT
public:
ModeDialog(QWidget *parent=0);
int getMode()
{
return mode;
}
void initMode(int id);
private slots:
void setMode(int id);
private:
int  mode;
QLabel *labelDialog;
QRadioButton *ownModeRb;
QRadioButton *qtModeRb;
QButtonGroup *modeGroup;
QPushButton *okButton;
QPushButton *cancelButton;

};

#endif // MODEDIALOG_H


3、实现modedialog.cpp:

#include "modedialog.h"
#include <QHBoxLayout>
#include <QVBoxLayout>

ModeDialog::ModeDialog(QWidget *parent)
:QDialog(parent)
{
labelDialog=new QLabel(tr("set Mode"));
ownModeRb=new QRadioButton(tr("&Own Mode"));
qtModeRb=new QRadioButton(tr("&Qt Mode"));
modeGroup=new QButtonGroup(this);
modeGroup->addButton(ownModeRb,0);
modeGroup->addButton(qtModeRb,1);
qtModeRb->setChecked(true);

okButton=new QPushButton(tr("OK"));
cancelButton=new QPushButton(tr("CANCEL"));
//添加信号连接
connect(modeGroup,SIGNAL(buttonClicked(int)),this,SLOT(setMode(int)));
connect(okButton,SIGNAL(clicked()),this,SLOT(accept()));
connect(cancelButton,SIGNAL(clicked()),this,SLOT(reject()));

QHBoxLayout *topLayout=new QHBoxLayout;
topLayout->addWidget(labelDialog);
topLayout->addWidget(ownModeRb);
topLayout->addWidget(qtModeRb);

QHBoxLayout *downLayout=new QHBoxLayout;
downLayout->addWidget(okButton);
downLayout->addStretch();
downLayout->addWidget(cancelButton);

QVBoxLayout *mainLayout=new QVBoxLayout;
mainLayout->addLayout(topLayout);
mainLayout->addLayout(downLayout);
setLayout(mainLayout);

mode=1;
}

void ModeDialog::setMode(int id)
{
mode=id;
}

void ModeDialog::initMode(int id)
{
if(id==0)
{
ownModeRb->setChecked(true);
}
else
{
qtModeRb->setChecked(true);
}
}


4、使用代码:

modeDialog=new ModeDialog(this);
modeDialog->initMode(m_dib->getMode());
if(modeDialog->exec())
{
m_dib->setMode(modeDialog->getMode());
}
delete modeDialog;


5、部分说明:

关于信号与槽的连接,参数只需要类型,不要参数名,ok和cancel这些button以点击为信号发出clicked()。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qt 对话框