qt:经典窗口操作与控制
- 手机
- 2025-09-03 13:21:01

1.窗口标题 this->setWindowTitle("to my lovely girl"); 2.设置窗口透明度
正常为1.0,透明为0.0
this->setWindowOpacity(0.0);
啥也没有
3.设置图片路径1.绝对路径(极少用)
2.相对路径:使用方法
QIcon icon("D:/project/p2.jpg")
3.资源文件法
会发现左侧文件栏出现资源文件选项,在路径里面找到对应qrc文件后,在同级目录或者子目录下放置图片,就可以通过资源文件前缀(创建时有显著表示提示创建)+文件名称调用了
4.qrc机制就是3中的资源文件法,qt使用的qrc机制主要解决两个问题,第一个是文件所在路径在用户机器上存在,第二个是文件不会被用户误删或修改,但是会存在一个问题,就是资源文件不能过大
qrc文件的特点:
1.XML格式的资源文件
2.用 XML 记录硬盘上的文件和对应的随意指定的资源名称,应用程序通过资源名称来访问这些资源
3.在 Qt 开发中,可以通过将资源文件添加到项目中来方便地访问和管理这些资源,这些资源文件可以位于 qrc 文件所在目录的同级或其子目录下
4.在构建程序的过程中,Qt 会把资源文件的二进制数据转成 cpp 代码,编译到 exe 中,从而使依赖的资源变得 “路径无关”
5.ToolTips就是鼠标放在某个按钮上会在一定时间显示一段话,可以使用两个函数来控制
q1->setToolTip("please"); q1->setToolTipDuration(3000);下面时间是毫秒
6. 控件状态与控制
一个控件肯定有能使用和不能使用,而使用对象可以是鼠标或者是按键如Tab,这里演示用按钮控制另一个按钮是否可以被鼠标选中(q是一个按钮)
void MainWindow::changecq() { bool able=q->isEnabled(); if(able) { q->setEnabled(false); } else { q->setEnabled(true); } }7.自主设置鼠标图标
在按下某些按钮后可以设置鼠标变换图标,比如经典的蓝圈,现在介绍一种自定义图片的方法
QPixmap qp("D:/project/p1.jpg"); QPixmap dp = qp.scaled(10, 10, Qt::KeepAspectRatio); QCursor cd(dp, dp.width()/2, dp.height()/2); QApplication::setOverrideCursor(cd);找到图片路径,设置图片大小,设置热点(类似鼠标箭头),再使用,就会发现我的鼠标箭头变成了图片
8.颜色控制白天模式与黑夜模式的颜色设置
void MainWindow::turnon() { this->centralWidget()->setStyleSheet("background-color:white"); this->setStyleSheet("QPushButton { background-color:black; color: white; }"); } void MainWindow::turnoff() { this->centralWidget()->setStyleSheet("background-color:black"); this->setStyleSheet("QPushButton { background-color:white; color: black; }"); }centralWidget()设置主窗口颜色,然后再使用以上语句对按钮颜色和字体颜色进行选择
颜色方面,
rgb(255, 0, 0) 或者 #FF0000 或者 #F00 表示纯红色。 rgb(0, 255, 0) 或者 #00FF00 或者 #0F0 表示纯绿色。 rgb(0, 0, 255) 或者 #0000FF 或者 #00F 表示纯蓝色。 rgb(255, 255, 255) 或者 #FFFFFF 或者 #FFF 表示纯白色。 rgb(0, 0, 0) 或者 #000000 或者 #000 表示纯黑色。
9.加入演示后的表白窗口的完整代码pro
QT += core gui QMAKE_PROJECT_DEPTH = 0 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG += c++17 # You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \ main.cpp \ mainwindow.cpp HEADERS += \ mainwindow.h FORMS += \ mainwindow.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 += \ mysource.qrc头文件
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include<QPushButton> #include<ctime> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); public slots: void changeq1(); void changeq2(); void changecq(); void turnon(); void turnoff(); private: Ui::MainWindow *ui; public: QPushButton *q1; QPushButton*q2; QPushButton*q; QPushButton*cq; QPushButton*light; QPushButton*dark; }; #endif // MAINWINDOW_Hmain.h
#include "mainwindow.h" #include <QApplication> #include<QObject> #include<QPushButton> #include<QDir> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); qDebug()<<QCoreApplication::applicationDirPath()<<'\n'; qDebug()<<QDir::currentPath(); return a.exec(); }源文件
#include "mainwindow.h" #include "ui_mainwindow.h" #include<QPixmap> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); this->setWindowTitle("to my lovely girl"); this->setWindowOpacity(1.0); QIcon icon(":/new/p3.jpg");//("D:/project/p2.jpg"); this->setWindowIcon(icon); q1=new QPushButton("yes",this); q1->setGeometry(300,200,50,50); q1->setToolTip("please"); q1->setToolTipDuration(3000); q2=new QPushButton("no",this); q2->setGeometry(450,200,50,50); q=new QPushButton("do you love me?",this); q->setGeometry(300,300,200,100); q->setEnabled(false); cq=new QPushButton("control the button",this); cq->setGeometry(100,300,100,50); std::srand(std::time(nullptr)); light=new QPushButton("light",this); light->setGeometry(375,50,50,50); dark=new QPushButton("dark",this); dark->setGeometry(375,100,50,50); connect(q1, &QPushButton::clicked, this, &MainWindow::changeq1); connect(q2, &QPushButton::clicked, this, &MainWindow::changeq2); connect(cq,&QPushButton::clicked,this,&MainWindow::changecq); connect(light,&QPushButton::clicked, this, &MainWindow::turnon); connect(dark,&QPushButton::clicked, this, &MainWindow::turnoff); } void MainWindow::changeq1() { QPixmap qp("D:/project/p1.jpg"); QPixmap dp = qp.scaled(10, 10, Qt::KeepAspectRatio); QCursor cd(dp, dp.width()/2, dp.height()/2); QApplication::setOverrideCursor(cd); QPushButton* q3=new QPushButton("have a dinner?",this); q3->setGeometry(250,500,300,100); q3->show(); connect(q3, &QPushButton::clicked, this, &MainWindow::close); } void MainWindow:: changeq2() { int x=std::rand()%100; int y=std::rand()%100; q2->setGeometry(x,y,50,50); } void MainWindow::changecq() { bool able=q->isEnabled(); if(able) { q->setEnabled(false); } else { q->setEnabled(true); } } void MainWindow::turnon() { this->centralWidget()->setStyleSheet("background-color:white"); this->setStyleSheet("QPushButton { background-color:black; color: white; }"); } void MainWindow::turnoff() { this->centralWidget()->setStyleSheet("background-color:black"); this->setStyleSheet("QPushButton { background-color:white; color: black; }"); } MainWindow::~MainWindow() { delete ui; }qt:经典窗口操作与控制由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“qt:经典窗口操作与控制”