Russian Qt Forum
Ноябрь 25, 2024, 04:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Всплывающие панели в полноэкранном режиме  (Прочитано 3485 раз)
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« : Ноябрь 01, 2013, 14:44 »

QMainWindow может переходить в полноэкранный режим, в этом режиме хочу спрятать QToolBar вверху и наследник от QWidget внизу. При наведении курсора мыши вниз экрана показывать панель и скрывать при отводе мыши с панели. Есть стандартные решения или вручную обрабатывать?
« Последнее редактирование: Ноябрь 08, 2013, 11:59 от deMax » Записан
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« Ответ #1 : Ноябрь 06, 2013, 11:18 »

Как сделать QToolBar поверх QMainWindow?

В QGlWidget идет сложное рисование, в полноэкранном режиме хочу сделать так, чтобы QToolBar перекрывал картинку, а не уменьшал ее.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #2 : Ноябрь 06, 2013, 13:22 »

Программно только через setParent( 0 ), наверное.
Записан

Qt 5.11/4.8.7 (X11/Win)
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« Ответ #3 : Ноябрь 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();
};

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

Сообщений: 600



Просмотр профиля
« Ответ #4 : Ноябрь 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 не вызывается.
« Последнее редактирование: Ноябрь 08, 2013, 12:00 от deMax » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 23.