dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = nullptr);
~Dialog();
private:
Ui::Dialog *ui;
public:
void getLoginMessage(QString& user,QString& password);
};
#endif // DIALOG_H
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include "dialog.h"
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void on_pushButton_clicked();
private:
Ui::Widget *ui;
Dialog* pDlg;
};
#endif // WIDGET_H
dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
#include <QPalette>
Dialog::Dialog(QWidget *parent) :
QDialog(parent,Qt::FramelessWindowHint),//设置无边框对话框
ui(new Ui::Dialog)
{
ui->setupUi(this);
QObject::connect(ui->okButton, SIGNAL(clicked()), this, SLOT(accept()));
QObject::connect(ui->cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
QPalette palette(this->palette());//定义一个调色板,并取得当前窗口的调色板
palette.setColor(QPalette::Window,QColor(238,215,172));//修改调色板内容
this->setAutoFillBackground(true);
this->setPalette(palette);//让调色板生效
ui->password->setEchoMode(QLineEdit::Password);// 设置lineedit密码
}
void Dialog::getLoginMessage(QString& user,QString& password)//注意参数是引用
{
user = ui->username->text();
password = ui->password->text();
}
Dialog::~Dialog()
{
delete ui;
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
pDlg = new Dialog(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
QString user;
QString password;
int nResult = pDlg->exec();//显示登录对话框
if(nResult == QDialog::Accepted)//判断是否点击OK
{
pDlg->getLoginMessage(user,password);//获取用户名和密码
}
else{}//点击取消啥也不做
}