QT对话框实现

模态对话框的实现:
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()。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值