Как добавить метку или кнопку в виджет QOpenGL? - PullRequest
0 голосов
/ 14 марта 2019

Я использую QT5.6 для отображения 3D-кадра. Я изучаю этот пример .

Все работает хорошо, но теперь я хочу добавить текст или кнопку в этот виджет (показанный на рисунке ниже) и не знаю как. как это .

Я пытался добавить его в окно или основной виджет, но это не удалось.


Window::Window(QWindow *screen)
    : QWindow(screen)

{
    setSurfaceType(QSurface::OpenGLSurface);

    resize(1024, 768);

    QSurfaceFormat format;
    if (QOpenGLContext::openGLModuleType() == QOpenGLContext::LibGL) {
        format.setVersion(4, 3);
        format.setProfile(QSurfaceFormat::CoreProfile);
    }
    format.setDepthBufferSize( 24 );
    format.setSamples( 4 );
    format.setStencilBufferSize(8);
    setFormat(format);
    createDisplayInfo();
    create();
}

void Window::createDisplayInfo()
{
    QRect geo = this->geometry();
    const QString styleSheet = "background-color: rgb(0, 0, 0); color: rgb(255, 255, 255);";

    QLabel *lable = new QLabel();
    lable->setText("hello world:");
    lable->setGeometry(10, geo.bottom() - 10 - 130, 50, 15);
    lable->setStyleSheet(styleSheet);
}

Не удалось, попробуйте другой:


int main(int argc, char **argv)
{
    QApplication app(argc, argv);
    Window *view = new Window();

    // initWidget
    QWidget *container = QWidget::createWindowContainer(view);
    QSize screenSize = view->screen()->size();
    container->setMinimumSize(QSize(200, 100));
    container->setMaximumSize(screenSize);

    QWidget *widget = new QWidget;
    QHBoxLayout *hLayout = new QHBoxLayout(widget);
    QVBoxLayout *vLayout = new QVBoxLayout();
    vLayout->setAlignment(Qt::AlignTop);
    hLayout->addWidget(container, 1);
    hLayout->addLayout(vLayout);

    widget->setWindowTitle(QStringLiteral("Basic shapes"));
    QRect geo = widget->geometry();
    const QString styleSheet = "background-color: rgb(0, 0, 0); color: rgb(255, 255, 255);";

    QLabel *lable = new QLabel();
    lable->setText("hello world:");
    lable->setGeometry(10, geo.bottom() - 10 - 130, 50, 15);
    lable->setStyleSheet(styleSheet);

Сбой снова.

Любой может мне помочь, пожалуйста!

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