c++ - QT:图片作为窗口

标签 c++ qt coding-style background window

我想用一些图片制作窗框。窗口不应该有边框、标题栏等。它也应该从事件窗口列表(在任务栏中)中隐藏。

我做的问题的第二部分:

this->setAttribute(Qt::WA_NoSystemBackground);
this->setAttribute(Qt::WA_QuitOnClose);

this->setAutoFillBackground(true);

this->setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);

对于继承QMainWindow 的新类。例如,它隐藏在 gnome 任务栏中,但在 Awn(awant windows 导航器)中,我将其播种在事件窗口列表中:(。

第一部分呢?前段时间,我在重载的 paintEvent 中使用 QRegion、QPixmap 和掩码进行了此操作。我把代码弄丢了。你能帮我解决这个问题吗?

最佳答案

关于问题的第一部分,您可能正在寻找这样的东西:

void MainWindow::paintEvent(QPaintEvent * event)
{
    QPainter painter(this);

    QPixmap pixmap = QPixmap();
    pixmap.load("/home/my_image.jpg");

    painter.drawPixmap(event->rect(), pixmap);
}

作为替代方案,您可以创建一个 label并将其显示在您的主窗口中,如下所示:

QLabel* label = new QLabel(this); // where 'this' is your window 
label->setGeometry(this->geometry());

QPixmap pixmap = QPixmap();
pixmap.load("/home/my_image.jpg");

label->setPixmap(pixmap.scaled(label->size(), Qt::KeepAspectRatio));

希望这对你有帮助,问候

关于c++ - QT:图片作为窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5525683/

相关文章:

c++ - 需要指针的私有(private)类变量?

c++ - 相互引用的C++模板实例化

c++ - 为什么数组订阅运算符可以双向工作?

linux - cmake 找不到 Qt5

c# - .NET 中的编码风格 : whether to refactor into new method or not?

.net - 使用属性初始化时如何格式化多个属性? (。网)

c++ - 我不明白在下面的代码中将 char buffer[] 与 X 类型的对象对齐的原因

c++ - 我如何在源代码中找到一个仍在等待的被破坏的线程?

python-3.x - PyQt5 - 如何在鼠标点击位置画一个点?

c# - 将值传递给方法