Préface
Récemment, j'utilise Qt5 et Qt Creator pour faire un projet de système de gestion. Naturellement, j'ai besoin d'utiliser l'interface de connexion, alors enregistrez la production de l'interface de connexion. La réalisation de certaines de ces fonctions a également bénéficié de l'étude précédente de la partie fenêtre irrégulière de la vidéo de base Qt5 .
table des matières
- Préface
- 1. Apprenez à mettre en œuvre une belle interface de connexion
-
- La première étape consiste à créer un nouveau projet Qwidget
- La deuxième étape, ajouter des composants d'interface
- La troisième étape consiste à réaliser les fonctions de réduction de fenêtre et de fermeture de fenêtre
- Étape 4: Cachez la bordure et l'arrière-plan de la fenêtre du widget
- La cinquième étape, réalisez que l'interface peut être déplacée
1. Apprenez à mettre en œuvre une belle interface de connexion
Regardez d'abord le produit fini.
La première étape consiste à créer un nouveau projet Qwidget
Il n'est pas nécessaire d'utiliser qmainwindow, et ces menus ne sont pas nécessaires. Généralement, qwidget peut être utilisé. Veuillez vérifier ui.
La deuxième étape, ajouter des composants d'interface
1. Ajouter un conteneur
Ajustez le conteneur à une taille appropriée et ajustez l'ensemble de la toile à une taille appropriée.
2. Ajouter des boutons, des étiquettes, des composants de texte
Idée:
Utilisez des widgets d'entrée pour le compte et le mot de passe: Line Edit
Logo et oubliez le mot de passe. Utilisez deux widgets d'affichage: TextLabel se
souvient-il si je choisis un
bouton: le bouton de connexion CheckBox utilise Buttons: PushButton
3. Modifiez le nom du composant
Commencez par modifier les attributs de texte par défaut de Modification de ligne, cliquez sur les deux modifications de ligne pour modifier les attributs de texte en Nom d'utilisateur et Mot de passe.
Ensuite, les autres étiquettes de texte de bouton peuvent être directement modifiées en double-cliquant sur le nom.
Après les deux étapes ci-dessus, vous pouvez obtenir ce look (ici, vous avez modifié la police dans le menu à droite de Wiighets, et vous pouvez la changer via la feuille de style plus tard).
4. Ajouter une feuille de style
Semblable à css, Qt a Qss, l'étape la plus critique est d'ajouter une feuille de style. Cliquez avec le bouton droit dans le canevas en dehors du conteneur Frame pour modifier la feuille de style et entrez le code suivant.
*{
background:rgb(255, 255, 255);
font-size:15px;
font-style:MingLiU-ExtB;
}
QFrame{
border:sold 10px rgba(0,0,0);
background-image:url(H:/GUI_design/day04/image/Login_Blue5);//背景
}
QLineEdit{
color:#8d98a1;
background-color:#405361;
font-size:16px;
border-style:outset;
border-radius:10px;
font-style:MingLiU-ExtB;
}
QPushButton{
background:#ced1d8;
border-style:outset;
border-radius:10px;
font-style:MingLiU-ExtB;
}
QPushButton:pressed{
background-color:rgb(224,0,0);
border-style:inset;
font-style:MingLiU-ExtB;
}
QCheckBox{
background:rgba(85,170,255,0);
color:white;
font-style:MingLiU-ExtB;
}
QLabel{
background:rgba(85,170,255,0);
color:white;
font-style:MingLiU-ExtB;
font-size:14px;
}
Il suffit de trouver "Du Niang" en arrière-plan.
Affichage après application de la feuille de style.
La troisième étape consiste à réaliser les fonctions de réduction de fenêtre et de fermeture de fenêtre
1. Ajouter des boutons de réduction et de fermeture de la fenêtre
Sélectionnez Boutons: Bouton outil, utiliser pour réduire et x pour fermer la fenêtre.
2. Le bouton va à l'emplacement
Tournez les deux boutons vers l'emplacement.
3. Exemple de code
Après être passé à l'emplacement, ajoutez simplement les fonctions close () et showMinimized () à la fonction correspondante. Le code spécifique est le suivant.
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
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_toolButton_clicked();
void on_toolButton_2_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
//核心代码就这几行
void Widget::on_toolButton_clicked()
{
close();
}
void Widget::on_toolButton_2_clicked()
{
showMinimized();
}
Ajustez le canevas à une taille appropriée. L'
affichage est le suivant: À
ce stade, nous devons également supprimer la bordure supérieure du widget et supprimer l'arrière-plan.
Étape 4: Cachez la bordure et l'arrière-plan de la fenêtre du widget
Ajoutez les deux lignes de code suivantes au fichier widget.cpp.
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//去窗口边框
setWindowFlags(Qt::FramelessWindowHint | windowFlags());
//把窗口背景设置为透明;
setAttribute(Qt::WA_TranslucentBackground);
}
La cinquième étape, réalisez que l'interface peut être déplacée
Besoin d'ajouter un événement de déplacement de la souris et de souris. Utilisez * e pour obtenir le mouvement de la souris ou appuyez sur.
main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui {
class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
protected:
void mouseMoveEvent(QMouseEvent *e);//鼠标移动
void mousePressEvent(QMouseEvent *e);//鼠标按下移动
private slots:
void on_close_clicked();
void on_minimized_clicked();
private:
Ui::Widget *ui;
QPoint p;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
#include <QMouseEvent>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//去窗口边框
setWindowFlags(Qt::FramelessWindowHint | windowFlags());
//把窗口背景设置为透明;
setAttribute(Qt::WA_TranslucentBackground);
}
Widget::~Widget()
{
delete ui;
}
void Widget::mousePressEvent(QMouseEvent *e)
{
if(e->button() == Qt::LeftButton)
{
//求坐标差值
//当前点击坐标-窗口左上角坐标
p = e->globalPos() - this->frameGeometry().topLeft();
}
}
void Widget::mouseMoveEvent(QMouseEvent *e)
{
if(e->buttons() & Qt::LeftButton)
{
//移到左上角
move(e->globalPos() - p);
}
}
void Widget::on_close_clicked()
{
close();
}
void Widget::on_minimized_clicked()
{
showMinimized();
}
Terminez le travail!
Référence:
https://www.bilibili.com/video/BV1gb411W7WE?p=2