qt 题目4

QSS-Skin-Builder
(感谢开源的高手)
这个工程比较好 ,

考虑到了qt creator 与 visual studio 同时使用时候的字符编码问题。
仔细研读

https://github.com/satchelwu/QSS-Skin-Builder

F:\qt_work\qt5_code_plus_jack\app_example\QSS-Skin-Builder-master
在这里插入图片描述

代码解析:

在这里插入图片描述

外围是一个 QUIWidget qui;
class QUIWidget : public QDialog ,没有对应的 ui 文件
在这里插入图片描述

里面这个部分是被包含的:
QUICreator *creator = new QUICreator;
class QUICreator : public QMainWindow ,有对应的ui文件 quicreator.ui
在这里插入图片描述

在这里插入图片描述
qss_skin_creater_app
在这里插入图片描述
在这里插入图片描述
然后修改 main.cpp的代码

#include "quiwidget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QUIWidget qui;
    qui.show();

    return a.exec();
}

建立一个other目录,同时建立 form空目录和 demo空目录:
demo目录下面有文件 appinit.cpp 和 appinit.h。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加一个head.h文件
在这里插入图片描述

添加network在这里插入图片描述

布局

在这里插入图片描述
verticalLayout1
widgetMain
verticalLayout2
widgetTitle
horizontalLayout4
labIco
labTitle
widgetMenu
horizontalLayout
btnMenu
btnMenu_Min
btnMenu_Max
btnMenu_Close
widget
verticalLayout3

verticalLayout1:

QSize QUIWidget::sizeHint() const
{
return QSize(600, 450);
}
this->resize(900, 750);

阶段1

在这里插入图片描述

给现在的工程 重新起一个名字

F:\qt_work\qt5_code_plus_jack\app_example\qss_skin_app
F:\qt_work\qt5_code_plus_jack\app_example\qss_skinA_app

qss_skinA_app界面

QUICreator 是一个 QMainWindow类,没想到 QMainWindow 也可以被包含为子窗口啊
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

主窗口区菜单

在这里插入图片描述

主窗口区主窗口

在这里插入图片描述

11

在这里插入图片描述

22

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

1,

首先 布置4个按钮
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2,tabWidget

布置
在这里插入图片描述
在这里插入图片描述

3

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 设备面板

在这里插入图片描述
form目录下面:

class frmDevice : public QWidget{
}
带ui文件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

labTemp -------------- labCurrentTemp
labDamp -------------- labCurrentDamp
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

### Qt编程面试题或招聘考试题目 以下是几道常见的Qt编程面试题及其解答: #### 题目一:如何在Qt中实现窗口的圆角? 可以通过设置样式的 `border-radius` 属性来实现窗口的圆角效果。具体方法是通过加载外部样式表或者直接定义字符串形式的样式表并应用到应用程序实例上。 ```cpp QFile file("style.qss"); file.open(QFile::ReadOnly); QString stylesheet = QString::fromUtf8(file.readAll()); qApp->setStyleSheet(stylesheet); ``` 上述代码展示了如何读取 `.qss` 文件并将其中的内容作为全局样式应用于整个应用程序[^2]。 --- #### 题目二:解释Qt中的智能指针 `QSharedPointer` 和 C++ 标准库中的 `std::shared_ptr` 的主要区别是什么? 两者都实现了引用计数机制,用于管理动态分配的对象生命周期。然而,`QSharedPointer` 是专为Qt设计的智能指针类,在多线程环境下提供了更好的支持,并且能够与Qt的其他组件无缝协作。相比之下,`std::shared_ptr` 更加通用,适用于任何标准C++环境。此外,`QWeakPointer` 对应于 `std::weak_ptr`,主要用于解决循环引用问题。 --- #### 题目三:什么是元对象编译器 (Meta-Object Compiler, MOC),它的作用是什么? MOC 是 Qt 中的一个工具,它扩展了 C++ 语言的功能以提供信号槽机制、运行时类型信息以及其他特性。当开发者使用特定关键字(如 signals、slots)或宏(如 Q_OBJECT)时,这些内容会被 MOC 解析,并生成额外的 C++ 源码文件(通常命名为 moc_*.cpp),从而使得信号和槽等功能得以正常工作[^3]。 --- #### 题目四:请描述一下 Qt 的事件系统是如何工作的? Qt 使用基于消息队列的方式处理各种类型的事件。所有的 GUI 应用程序都有一个主事件循环 (`QEventLoop`) 来分发来自操作系统的输入事件给相应的接收者。每个 QObject 及其子类都可以重载虚函数 `event()` 或连接预定义好的 slot 函数响应不同的事件类型。例如鼠标点击、键盘按键等均会触发对应的事件处理器[^1]。 --- #### 题目五:如果要创建一个多线程的应用程序,应该注意哪些事项? 在构建多线程 Qt 程序时需要注意以下几点: 1. **GUI 安全性**:只有主线程才能访问 UI 组件;因此跨线程更新界面需借助信号/槽通信完成。 2. **数据共享保护**:对于多个线程间可能竞争的数据结构采用互斥锁或其他同步原语加以防护。 3. 利用 Qt 提供的高级 API 如 `QThread`, `QThreadPool` 而不是手动调用 pthreads 或 Windows Thread APIs 这样的底层接口简化开发流程同时保持可移植性。 --- #### 题目六:怎样判断某个 widget 是否完全可见? 可以利用 QWidget 类提供的成员函数组合起来达成目的。比如先确认当前部件是否被隐藏(`isVisible()`) ,再进一步验证父级链路直至顶层容器都没有遮挡现象即可得出结论。另外还可以考虑几何位置关系等因素综合判定实际显示状态。 --- ### 示例代码片段展示信号槽功能 下面给出一段简单的例子演示基本信号槽绑定过程: ```cpp class MyClass : public QObject { Q_OBJECT public slots: void handleValue(int value) { qDebug() << "Received:" << value; } }; QObject *sender = new QPushButton(); MyClass receiver; connect(sender, &QPushButton::clicked, &receiver, &MyClass::handleValue); delete sender; // 自动清理关联资源 ``` 此段代码说明了一个按钮按下动作发生后将传递整数值至目标对象的方法之中执行相应逻辑运算的过程。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值