用qtwidget编写了一个窗口,为了实现背景透明和取消头部的最小化关闭等按钮,在mainwindow.cpp中编写了以下代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
setAttribute(Qt::WA_TranslucentBackground);//这句是添加的
setWindowFlags(Qt::FramelessWindowHint);//这句是添加的
}
MainWindow::~MainWindow()
{
delete ui;
}
结果如下图:
然后在cmd中用这句命令使ui文件转为pyuic5 -o mainwindow.py mainwindow.ui 把ui文件转成了py文件。但是在python里运行后变成了这样
在python里pyqt5运行的结果
想问一下是不是在cpp中写过代码后,要进一步操作再转换才能使pyqt5输出的结果和qt中的ui结果一样?请教懂哥帮忙解决
已解决:
self.ui = uic.loadUi('Login/loginQt/loginUI.ui')#用这句话把ui界面变成一个实例化对象导入py文件中
self.ui.setWindowFlags(QtCore.Qt.FramelessWindowHint)#去除最大最小化
self.ui.setAttribute(QtCore.Qt.WA_TranslucentBackground)#主窗体透明背景
#再用上面两句实现功能
如果你要使转换后的 Python 程序和在 Qt 中的效果一样,
那你就要在 Python 程序中再次添加设置窗口属性的代码 就像在 C++ 中一样
在 mainwindow.py 文件中,把下面代码添加到主窗口的初始化方法中
class Ui_MainWindow(object):
# ...
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
self.setAttribute(Qt.WA_TranslucentBackground)
self.setWindowFlags(Qt.FramelessWindowHint)
不知道你这个问题是否已经解决, 如果还没有解决的话:只是把ui转成了py
setAttribute(Qt::WA_TranslucentBackground);//这句是添加的
setWindowFlags(Qt::FramelessWindowHint);//这句是添加的
这两句你还要在代码里写上