gpt4 book ai didi

c++ - Qt编辑无框窗口

转载 作者:太空宇宙 更新时间:2023-11-04 12:17:09 26 4
gpt4 key购买 nike

我在 Qt 中创建了一个无框窗口,其中包含小部件和背景。但是我在那个表格中遇到了问题,当我调整表格时所有小部件都调整好但背景没有请参阅此图片进行演示

没有调整大小时:

http://0000.2.img98.net/out.php/i20624_no-resize.jpg

调整大小时:

http://0000.2.img98.net/out.php/i20625_with-resize.jpg

这是我创建表单的代码:

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QPushButton>
#include <QLabel>
#include <QComboBox>
#include <QPixmap>
#include <QVBoxLayout>
#include <QPainter>
#include <QMouseEvent>
#include <QtGui>
#include <QSizeGrip>


class MyWidget : public QWidget {
Q_OBJECT
private:
QPushButton* button;
QLabel* label;
QComboBox* combobox;
QPixmap pixmap;

public:
explicit MyWidget(QWidget *parent = 0) : QWidget(parent, Qt::FramelessWindowHint)
{

// Create some controls
button = new QPushButton();
label = new QLabel();
combobox = new QComboBox();


QVBoxLayout* l = new QVBoxLayout();

l->addWidget(button);
l->addWidget(label);
l->addWidget(combobox);


QSizeGrip *grip = new QSizeGrip(parent);

l->addWidget(grip, 0, Qt::AlignBottom | Qt::AlignRight);
setLayout(l);


resize (400, 500);

setAttribute(Qt::WA_TranslucentBackground); // enable translucent background

pixmap = QPixmap("./1.png");


}

protected:
virtual void paintEvent (QPaintEvent* event) {
QPainter painter(this);
painter.setPen(Qt::NoPen);
painter.setBrush(QColor(0, 0, 0, 0));
QRect rec = pixmap.rect();
painter.drawRect(this->rect());
painter.drawPixmap(this->rect(), pixmap, rec);


}
private:
bool pressed;
QPoint mousePressPoint;

protected:
virtual void mousePressEvent ( QMouseEvent * event ) {
QWidget::mousePressEvent(event);
if (!pressed) {
pressed = true;
mousePressPoint = event->pos();
}
}

#endif // MYWIDGET_H

最佳答案

由于您的控件位于窗口的中心但看起来不像它们,这可能表明您用作背景的图像的非透明部分周围有透明边框。

您可以在 paintEvent 中移除画笔的透明度以确认这一点,例如:

painter.setBrush(QColor(0, 0, 0, 255));

更清楚一点,问题不在你的代码中,而在图像中:用编辑器打开图像,只选择不透明的部分,使用“裁剪工具”,最后保存图片。

关于c++ - Qt编辑无框窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7172726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com