天天看点

qt 扁平化登陆注册页面

看腻了QT俗气的界面,心里总想做个漂亮点的,于是捣腾了这么个小东西(上图...)

   class Login : public QDialog

{

    Q_OBJECT

public:

    explicit Login(QWidget *parent = 0);

    ~Login();

private:

    Ui::Login *ui;

    QPoint dragVector; //鼠标拖动起始坐标

    void initBackground();

    void mousePressEvent(QMouseEvent *event);

    void mouseMoveEvent(QMouseEvent *event);

    void closeEvent(QCloseEvent *event);

private slots:

    void on_exit_clicked(); //退出按钮槽函数

    void on_minimum_clicked(); //最小化按钮槽函数

    void on_more_clicked(); //“更多'按钮槽函数

    void on_login_clicked(); //登陆按钮槽函数

    void on_sign_clicked(); //注册按钮槽函数

}; 

Login::Login(QWidget *parent) :

    QDialog(parent),

    ui(new Ui::Login)

{

    ui->setupUi(this);

    initBackground();

}

Login::~Login()

{

    delete ui;

}

void Login::initBackground()

{

    setWindowFlags(Qt::FramelessWindowHint); //去边框

    setFixedSize(427,322); //固定面板大小

    ui->more->setFlat(true); //”更多“按钮

    ui->more->setToolTip(tr("更多"));

    ui->more->setStyleSheet(tr("QPushButton:hover {background-image: url(:/resources/img/btn_back2.png);}"));

    ui->minimum->setFlat(true); //”最小化“按钮

    ui->minimum->setToolTip(tr("最小化"));

    ui->minimum->setStyleSheet(tr("QPushButton:hover {background-image: url(:/resources/img/btn_back2.png);}"));

    ui->exit->setFlat(true); //”退出“按钮

    ui->exit->setToolTip(tr("退出"));

    ui->exit->setStyleSheet(tr("QPushButton:hover {background-image: url(:/resources/img/btn_back2.png);}"));

    ui->login->setFlat(true); //”登陆“按钮

    ui->login->setToolTip(tr("登陆"));

    ui->login->setStyleSheet(tr("QPushButton {background-image: url(:/resources/img/login_btn.jpg);}"));

    ui->sign->setFlat(true); //”注册“按钮

    ui->sign->setToolTip(tr("新用户注册"));

}

void Login::mousePressEvent(QMouseEvent *event)

{

    if(event->button() == Qt::LeftButton)

    {

        dragVector = event->globalPos() - frameGeometry().topLeft();

        event->accept();

    }

}

void Login::mouseMoveEvent(QMouseEvent *event)

{

    if(event->buttons() && Qt::LeftButton)

    {

        move(event->globalPos() - dragVector);

        event->accept();

    }

}

void Login::closeEvent(QCloseEvent *event)

{

    done(QDialog::Rejected);

    event->accept();

}

void Login::on_exit_clicked()

{

    done(QDialog::Rejected);

}

void Login::on_minimum_clicked()

{

    showMinimized();

}

void Login::on_more_clicked()

{

    //显示更多配置选择

}

void Login::on_login_clicked()

{

}

void Login::on_sign_clicked()

{

    //注册对话框

}

qt 扁平化登陆注册页面

注意事项:

(1)对QPushButton进行了setFlat(true)之后,使用QSS方式设置按钮背景颜色将无效,只有鼠标点击时效果才会显示出来。

(2)将QDialog设置为无边框形式后将不能拖动,此时可以重写mousePressEvent后mouseMoveEvent实现拖动,具体见代码

继续阅读