Как нарисовать мозаичное изображение с QT - PullRequest
3 голосов
/ 25 апреля 2011

Я пишу интерфейс с 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);

QBrush: Неправильное использование TexturePattern

1 Ответ

7 голосов
/ 25 апреля 2011

Если вы просто хотите показать изображение, вы можете использовать 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();
}

Полученное приложение:
screen shot

В качестве альтернативы вы можете использовать таблицы стилей с любым виджетом и изменить свойство background-image в виджете. Это больше интегрировано с QtDesigner, так как вы можете установить таблицу стилей и изображение в QtDesigner .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...