Russian Qt Forum

Qt => Общие вопросы => Тема начата: deMax от Ноябрь 01, 2013, 14:44



Название: Всплывающие панели в полноэкранном режиме
Отправлено: deMax от Ноябрь 01, 2013, 14:44
QMainWindow может переходить в полноэкранный режим, в этом режиме хочу спрятать QToolBar вверху и наследник от QWidget внизу. При наведении курсора мыши вниз экрана показывать панель и скрывать при отводе мыши с панели. Есть стандартные решения или вручную обрабатывать?


Название: Re: Всплывающие панели в полноэкранном режиме
Отправлено: deMax от Ноябрь 06, 2013, 11:18
Как сделать QToolBar поверх QMainWindow?

В QGlWidget идет сложное рисование, в полноэкранном режиме хочу сделать так, чтобы QToolBar перекрывал картинку, а не уменьшал ее.


Название: Re: Всплывающие панели в полноэкранном режиме
Отправлено: GreatSnake от Ноябрь 06, 2013, 13:22
Программно только через setParent( 0 ), наверное.


Название: Re: Всплывающие панели в полноэкранном режиме
Отправлено: deMax от Ноябрь 07, 2013, 08:42
Я сделал, пока так (в тестовом проекте) в окне располагаются, вверху тулбар внизу виджет с кнопками

fs - Переход в full screen. ns - normal screen.
label - картинка(эмуляция моего тяжелого виджета)
verticalLayout - главный компоновщик

cpp
Код:
MW::MW() {
    setupUi(this);
    connect(actionFs, SIGNAL(triggered()), this, SLOT(fs()));
    connect(actionNs, SIGNAL(triggered()), this, SLOT(ns()));
}
void MW::fs()
{
    verticalLayout->removeWidget(label);

    label->move(10,10);    label->resize(size()-QSize(20,20));    label->show();

    verticalLayout->addItem(si = new QSpacerItem(400,200,QSizePolicy::Maximum, QSizePolicy::Maximum));
//    showFullScreen();
}

void MW::ns()
{
    verticalLayout->removeItem(si);
    delete si;
    verticalLayout->insertWidget(0,label);
//    showNormal();
}
h
Код:
class MW:public QMainWindow, public Ui::mainForm
{
    Q_OBJECT

    QSpacerItem *si;
public:
    MW();

private slots:
    void fs();
    void ns();
};

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


Название: [Решено] Re: Всплывающие панели в полноэкранном режиме
Отправлено: deMax от Ноябрь 07, 2013, 10:09
А ларчик просто открывался...

Код:
class CentralWidget: public QWidget
{
    Q_OBJECT

    virtual void moveEvent(QMoveEvent *e) { move(0,0); resize(parentWidget()->size());}
    virtual void resizeEvent(QResizeEvent *e) { move(0,0); resize(parentWidget()->size());}

public:
    CentralWidget(QWidget *parent):QWidget(parent){}
};

Только заметны полосы при показе тул бара, хотя resize для виджета OpenGl не вызывается.