qt 加载中遮罩添加按钮
时间: 2023-11-21 16:29:01 浏览: 82
你可以使用 Qt 的 QWidget 类中的 setDisabled 和 setEnabled 函数来实现遮罩和按钮的添加。
首先,创建一个 QWidget 类的对象,用于实现遮罩效果。然后,将其设置为应用程序的遮罩,这将禁用主窗口的所有控件。接下来,在 QWidget 对象中添加一个 QPushButton 控件,并设置其位置和大小。最后,将 QPushButton 控件设置为可用状态,这将使其在遮罩窗口上可见并可以被点击。
以下是示例代码:
```cpp
// 创建遮罩窗口
QWidget* mask = new QWidget(this);
mask->setStyleSheet("background-color: rgba(0, 0, 0, 100);");
mask->setGeometry(rect());
mask->setDisabled(true);
// 添加按钮
QPushButton* button = new QPushButton("Button", mask);
button->setGeometry(50, 50, 100, 30);
button->setEnabled(true);
```
上述代码将创建一个半透明的黑色背景遮罩窗口,并在其中添加一个名为 "Button" 的 QPushButton 控件。你可以根据自己的需要更改遮罩窗口和按钮的样式和位置。
相关问题
QT遮罩层实现等待加载效果
要实现等待加载效果,可以使用QT的遮罩层和QMovie动画。
首先,创建一个QWidget作为遮罩层,将其背景色设置为半透明的黑色,然后将其大小设置为整个窗口大小。
接着,使用QMovie加载一个动画gif,将其放置在遮罩层中心,启动动画。
最后,在需要等待加载的位置,将遮罩层显示出来,等待加载完成后隐藏遮罩层即可。
以下是一个简单的示例代码:
```python
class LoadingMask(QWidget):
def __init__(self, parent):
super().__init__(parent)
self.setFixedSize(parent.size())
self.setStyleSheet('background-color: rgba(0, 0, 0, 128);')
self.movie = QMovie('loading.gif')
self.movie.setScaledSize(QSize(100, 100))
label = QLabel(self)
label.setMovie(self.movie)
label.move(self.width() // 2 - 50, self.height() // 2 - 50)
def start(self):
self.movie.start()
def stop(self):
self.movie.stop()
self.hide()
```
使用时,在需要等待加载的位置创建一个LoadingMask实例,并调用start方法显示遮罩层和动画,加载完成后调用stop方法隐藏遮罩层即可。
用qt代码实现遮罩层实现等待加载效果
好的,下面是使用Qt代码实现遮罩层实现等待加载效果的示例代码:
```python
from PyQt5.QtCore import QSize, Qt, QThread, pyqtSignal
from PyQt5.QtGui import QMovie
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
class LoadingMask(QWidget):
def __init__(self, parent):
super().__init__(parent)
self.setFixedSize(parent.size())
self.setStyleSheet('background-color: rgba(0, 0, 0, 128);')
self.movie = QMovie('loading.gif')
self.movie.setScaledSize(QSize(100, 100))
label = QLabel(self)
label.setMovie(self.movie)
label.move(self.width() // 2 - 50, self.height() // 2 - 50)
def start(self):
self.movie.start()
def stop(self):
self.movie.stop()
self.hide()
class WorkerThread(QThread):
finished = pyqtSignal()
def run(self):
# 模拟耗时操作
import time
time.sleep(5)
self.finished.emit()
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('遮罩层实现等待加载效果')
self.resize(500, 500)
self.loading_mask = LoadingMask(self)
self.worker_thread = WorkerThread(self)
self.worker_thread.finished.connect(self.on_finished)
def on_finished(self):
self.loading_mask.stop()
def do_something(self):
self.loading_mask.start()
self.worker_thread.start()
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
window = MainWindow()
window.show()
window.do_something()
sys.exit(app.exec_())
```
这个示例代码中,首先定义了一个LoadingMask类,它继承自QWidget,用于实现遮罩层和等待加载动画的显示和隐藏。在LoadingMask的构造函数中,设置其大小和背景颜色,并创建一个QMovie用于加载动画gif,然后将QMovie放置在遮罩层中央。start和stop方法用于启动和停止动画和遮罩层的显示。
MainWindow继承自QWidget,是主窗口类。它包含了一个LoadingMask实例和一个WorkerThread实例。do_something方法用于启动等待加载的操作,它首先调用LoadingMask的start方法显示遮罩层和加载动画,然后启动WorkerThread执行耗时操作。WorkerThread是QThread的子类,用于模拟耗时操作,它执行完成后会发送一个finished信号。MainWindow的on_finished方法用于接收WorkerThread发送的finished信号,并调用LoadingMask的stop方法隐藏遮罩层和动画。
在主函数中,创建一个QApplication实例和MainWindow实例,然后调用MainWindow的show方法显示主窗口,并调用do_something方法启动等待加载的操作。最后调用QApplication的exec_方法进入Qt事件循环。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)