【问题标题】:QT: picture as windowQT:图片作为窗口
【发布时间】:2011-07-28 09:29:51
【问题描述】:

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

我提出的问题的第二部分:

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

this->setAutoFillBackground(true);

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

对于继承 QMainWindow 的新类。例如,它在 gnome 任务栏上是隐藏的,但在 Awn (awant windows navigator) 中,我将它播种在活动窗口列表中:(。

第一部分怎么样。我前段时间用QRegion, QPixmap 和超载paintEvent 中的掩码做到了这一点。我丢失了密码。你能帮我解决这个问题吗?

【问题讨论】:

  • 如果我记得,窗口是任何顶级小部件,并且所述小部件遵循操作系统的规则,即它将具有操作系统规定的标题栏和边框。

标签: c++ qt coding-style background window


【解决方案1】:

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

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));

希望这会有所帮助,问候

【讨论】:

  • 使用第一个代码时,我看不到我的图像作为背景,只是一个空的黑色矩形。
  • 我错过了正确的图像方式。现在它绘制了,但它下面仍然是黑色矩形。
  • 我猜你需要发布你的代码;两个代码 sn-ps 在我的 ubuntu 上运行良好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
相关资源
最近更新 更多