如何使用QT绘制平铺图像

3

我正在使用C++/Qt在QtCreator的设计器中编写接口。选择哪个元素可以制作带有背景图像的矩形?

第二个问题:如何绘制平铺图像?我有一个大小为(1×50)的图像,我想将其呈现为父宽度。有什么想法吗?


mTopMenuBg = QPixmap("images/top_menu_bg.png");
mTopMenuBrush = QBrush(mTopMenuBg);
mTopMenuBrush.setStyle(Qt::TexturePattern);
mTopMenuBrush.setTexture(mTopMenuBg);

ui->graphicsView->setBackgroundBrush(mTopMenuBrush);
1个回答

10
如果您只想展示一张图片,可以使用QImage。为了创建一个使用该图片平铺的背景,需使用QBrush和QImage构建。接着,例如在使用QGraphicsScene时,您可以将该刷子设置为背景刷子。以下是一个填充整个主窗口使用平铺图像"document.png"的示例:
int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    QMainWindow *mainWindow = new QMainWindow();

    QGraphicsScene *scene = new QGraphicsScene(100, 100, 100, 100);
    QGraphicsView *view = new QGraphicsView(scene);
    mainWindow->setCentralWidget(view);

    QImage *image = new QImage("document.png");
    if(image->isNull()) {
        std::cout << "Failed to load the image." <<std::endl;
    } else {
        QBrush *brush = new QBrush(*image);
        view->setBackgroundBrush(*brush);
    }

    mainWindow->show();
    return app.exec();
}

生成的应用程序:
屏幕截图

或者,似乎您可以使用样式表与任何小部件,并更改小部件上的background-image属性。这与QtDesigner更加集成,因为您可以在QtDesigner中设置样式表和图像。


抱歉,我不知道如何使用那个画刷来填充窗口中的确切矩形。还有,应该在哪里绘制?是在paintEvent中吗? - Max Frai
你只是想用平铺的图像填充一个窗口吗?你想把图像放在哪种小部件上? - Dusty Campbell
@dusty-campbell 是的,我只需要在我的主窗口中用平铺纹理填充一些矩形。我不在乎使用什么辅助小部件。 - Max Frai
如果您创建了一个QGraphicsView,然后将backgroundBrush设置为使用QImage创建的QBrush,我认为您会得到想要的效果。 - Dusty Campbell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接