天天看點

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實作拖動,具體見代碼

繼續閱讀