火影 发表于 2024-12-29 22:24:56

Qt信号与槽及QSS界面美化

https://i-blog.csdnimg.cn/direct/b81192ced6b3468f91a8e48e7d5de9b1.png
https://i-blog.csdnimg.cn/direct/1c5957564b05484299f0ce5196a46e6d.pnghttps://i-blog.csdnimg.cn/direct/d50e49d1fc5c4732b716951bca6cef39.png
https://i-blog.csdnimg.cn/direct/9bfb3f8a68c148a88bb7fec62f9a460d.pnghttps://i-blog.csdnimg.cn/direct/e16f55b3464743778aaf1a121f0bb0c7.png
login2_0.pro
QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    user.cpp \
    widget.cpp

HEADERS += \
    user.h \
    widget.h

FORMS += \
    user.ui \
    widget.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

RESOURCES += \
    sor.qrc
user.h
#ifndef USER_H
#define USER_H

#include <QWidget>

namespace Ui {
class User;
}

class User : public QWidget
{
    Q_OBJECT

public:
    explicit User(QWidget *parent = nullptr);
    ~User();

public slots:
    void login();
private:
    Ui::User *ui;
};

#endif // USER_H
widget.h
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTimer>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
signals:
    void log_sig();
public slots:
    void btn_closed();
    void btn_hide();
private slots:
    void on_pushButton_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H
main.cpp
#include "widget.h"
#include "user.h"
#include <QApplication>


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    User u;
    QObject::connect(&w,&Widget::log_sig,&u,&User::login);
    return a.exec();
}
user.cpp
#include "user.h"
#include "ui_user.h"

User::User(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::User)
{
    ui->setupUi(this);
}

User::~User()
{
    delete ui;
}

void User::login()
{
    this->show();
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setWindowFlag(Qt::FramelessWindowHint);
    this->setAttribute(Qt::WA_TranslucentBackground);
    QObject::connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(btn_closed()));
    QObject::connect(ui->pushButton_3,SIGNAL(clicked()),this,SLOT(btn_hide()));
}

Widget::~Widget()
{
    delete ui;
}

void Widget::btn_closed()
{
    this->close();
}
void Widget::btn_hide()
{
    this->showMinimized();
}
void Widget::on_pushButton_clicked()
{
    if(ui->lineEdit->text() == "admin" && ui->lineEdit_2->text() == "12345")
    {
      ui->label_3->setStyleSheet(QString("background-color:blue;color:white"));
      ui->label_3->setText("登陆成功");
      emit log_sig();
      // 使用 QTimer 延时关闭
      QTimer::singleShot(600, this, ()
      {
            ui->label_3->setStyleSheet(QString("background:transparent;"));

            this->close();
      });
    }
    else
    {
      ui->label_3->setText("登陆失败");
         ui->label_3->setStyleSheet(QString("background-color:red;color:black"));
      // 使用 QTimer 延时清除文本
      QTimer::singleShot(600, this, ()
      {
            ui->label_3->setStyleSheet(QString("background:transparent;"));
            ui->label_3->setText("");
            ui->lineEdit_2->setText("");
      });
    }
}
user.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>User</class>
<widget class="QWidget" name="User">
<property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
</property>
<property name="windowTitle">
   <string>Form</string>
</property>
<widget class="QLabel" name="label">
   <property name="geometry">
    <rect>
   <x>80</x>
   <y>60</y>
   <width>211</width>
   <height>151</height>
    </rect>
   </property>
   <property name="text">
    <string>用户界面</string>
   </property>
</widget>
</widget>
<resources/>
<connections/>
</ui>
widget.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Widget</class>
<widget class="QWidget" name="Widget">
<property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>510</width>
    <height>630</height>
   </rect>
</property>
<property name="windowTitle">
   <string>Widget</string>
</property>
<property name="styleSheet">
   <string notr="true">*{
        background-color: rgb(85, 85, 127);
}
QFrame#frame{
        border-image: url(:/Logo/shanChuan.jpg);
        border-radius:30px;
}

QFrame#frame_2{
        background-color: rgba(116, 116, 116, 100);
        border-radius:30px;
}

QLabel#label{
        background-color: rgba(0, 0, 0, 40);
        border-radius:30px;
}
#label_2{
        font: 75 18pt &quot;微软雅黑&quot;;
        background:transparent;/*完全透明*/
        color: rgba(193, 193, 193, 150);
}
#label_3{
        qproperty-alignment: AlignCenter;
        font: 75 20pt &quot;微软雅黑&quot;;
        background:transparent;/*完全透明*/
        color: rgba(255, 0, 0, 150);
}
QLineEdit{
        background-color: rgba(195, 195, 195, 0);
        border:none;/*无边框*/
        border-bottom:1px solid rgba(255, 255, 255, 150);
        color: rgba(193, 193, 193, 150);
}
QPushButton#pushButton{
        background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0.6875 rgba(0, 47, 225, 255), stop:1 rgba(255, 255, 255, 255));
        font: 75 16pt &quot;微软雅黑&quot;;
        color: rgba(193, 193, 193, 150);
        border-radius:5px;
}
QPushButton#pushButton:hover{
        background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0.6875 rgba(50, 80, 225, 255), stop:1 rgba(255, 255, 255, 255));
        font: 75 16pt &quot;微软雅黑&quot;;
        color: rgba(193, 193, 193, 150);
        border-radius:5px;
}
QPushButton#pushButton:pressed{
        background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0.6875 rgba(80, 47, 225, 255), stop:1 rgba(255, 255, 255, 255));
        font: 75 16pt &quot;微软雅黑&quot;;
        color: rgba(193, 193, 193, 150);
        border-radius:5px;
        padding-top:5px;
        padding-left:5px;
}
QPushButton#pushButton_2{
       
        background-color: rgba(214, 214, 214, 0);
        font: 75 16pt &quot;微软雅黑&quot;;
        color: rgba(193, 193, 193, 150);
        border-radius:5px;
}
QPushButton#pushButton_2:hover{
        background-color: red;
        font: 75 16pt &quot;微软雅黑&quot;;
        color: rgba(193, 193, 193, 150);
        border-radius:5px;
}
QPushButton#pushButton_2:pressed{
        background-color: rgba(214, 214, 214, 0);
        font: 75 16pt &quot;微软雅黑&quot;;
        color: rgba(193, 193, 193, 150);
        border-radius:5px;
        padding-top:5px;
        padding-left:5px;
}
QPushButton#pushButton_3{
       
        background-color: rgba(214, 214, 214, 0);
        font: 75 25pt &quot;微软雅黑&quot;;
        color: rgba(193, 193, 193, 150);
        border-radius:5px;
}
QPushButton#pushButton_3:hover{
        background-color: red;
        font: 75 25pt &quot;微软雅黑&quot;;
        color: rgba(193, 193, 193, 150);
        border-radius:5px;
}
QPushButton#pushButton_3:pressed{
        background-color: rgba(214, 214, 214, 0);
        font: 75 25pt &quot;微软雅黑&quot;;
        color: rgba(193, 193, 193, 150);
        border-radius:5px;
        padding-top:5px;
        padding-left:5px;
}


</string>
</property>
<widget class="QFrame" name="frame">
   <property name="geometry">
    <rect>
   <x>40</x>
   <y>90</y>
   <width>431</width>
   <height>501</height>
    </rect>
   </property>
   <property name="styleSheet">
    <string notr="true"/>
   </property>
   <property name="frameShape">
    <enum>QFrame::StyledPanel</enum>
   </property>
   <property name="frameShadow">
    <enum>QFrame::Raised</enum>
   </property>
   <widget class="QFrame" name="frame_2">
    <property name="geometry">
   <rect>
      <x>0</x>
      <y>0</y>
      <width>431</width>
      <height>501</height>
   </rect>
    </property>
    <property name="frameShape">
   <enum>QFrame::StyledPanel</enum>
    </property>
    <property name="frameShadow">
   <enum>QFrame::Raised</enum>
    </property>
    <widget class="QLabel" name="label">
   <property name="geometry">
      <rect>
       <x>40</x>
       <y>60</y>
       <width>350</width>
       <height>420</height>
      </rect>
   </property>
   <property name="text">
      <string/>
   </property>
    </widget>
    <widget class="QLabel" name="label_2">
   <property name="geometry">
      <rect>
       <x>150</x>
       <y>100</y>
       <width>121</width>
       <height>31</height>
      </rect>
   </property>
   <property name="font">
      <font>
       <family>微软雅黑</family>
       <pointsize>18</pointsize>
       <weight>9</weight>
       <italic>false</italic>
       <bold>false</bold>
      </font>
   </property>
   <property name="text">
      <string>登陆界面</string>
   </property>
    </widget>
    <widget class="QLineEdit" name="lineEdit">
   <property name="geometry">
      <rect>
       <x>80</x>
       <y>200</y>
       <width>261</width>
       <height>51</height>
      </rect>
   </property>
   <property name="font">
      <font>
       <pointsize>13</pointsize>
      </font>
   </property>
   <property name="placeholderText">
      <string>请输入账户:</string>
   </property>
    </widget>
    <widget class="QLineEdit" name="lineEdit_2">
   <property name="geometry">
      <rect>
       <x>80</x>
       <y>290</y>
       <width>261</width>
       <height>51</height>
      </rect>
   </property>
   <property name="font">
      <font>
       <pointsize>13</pointsize>
      </font>
   </property>
   <property name="echoMode">
      <enum>QLineEdit::Password</enum>
   </property>
   <property name="placeholderText">
      <string>请输入密码:</string>
   </property>
    </widget>
    <widget class="QPushButton" name="pushButton">
   <property name="geometry">
      <rect>
       <x>80</x>
       <y>390</y>
       <width>261</width>
       <height>51</height>
      </rect>
   </property>
   <property name="text">
      <string>登陆</string>
   </property>
    </widget>
    <widget class="QLabel" name="label_3">
   <property name="geometry">
      <rect>
       <x>40</x>
       <y>10</y>
       <width>351</width>
       <height>51</height>
      </rect>
   </property>
   <property name="font">
      <font>
       <family>微软雅黑</family>
       <pointsize>20</pointsize>
       <weight>9</weight>
       <italic>false</italic>
       <bold>false</bold>
      </font>
   </property>
   <property name="text">
      <string/>
   </property>
    </widget>
    <widget class="QPushButton" name="pushButton_2">
   <property name="geometry">
      <rect>
       <x>370</x>
       <y>0</y>
       <width>51</width>
       <height>31</height>
      </rect>
   </property>
   <property name="text">
      <string>x</string>
   </property>
    </widget>
    <widget class="QPushButton" name="pushButton_3">
   <property name="geometry">
      <rect>
       <x>320</x>
       <y>0</y>
       <width>51</width>
       <height>31</height>
      </rect>
   </property>
   <property name="font">
      <font>
       <family>微软雅黑</family>
       <pointsize>25</pointsize>
       <weight>9</weight>
       <italic>false</italic>
       <bold>false</bold>
      </font>
   </property>
   <property name="text">
      <string>-</string>
   </property>
    </widget>
   </widget>
</widget>
</widget>
<resources/>
<connections/>
</ui>


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Qt信号与槽及QSS界面美化