2013-11-29 4 views
15

У меня есть MediaPanel, который унаследован от QWidget, и я хочу, чтобы скрыть строку заголовка, но событие, если я установить флаги с setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowTitleHint); (или некоторыми другими флагами, как), результат все тот же: mediaPanelQt удалить строку заголовка

и если я использую setWindowFlags(Qt::Window | Qt::FramelessWindowHint); я теряю все кнопки, метки и ползунков: empty media panel

Я играл на примере Qt и некоторые комбинации, кажется, невозможно ...

EDIT:

Я опубликовал сокращенную часть моего кода, может кто-нибудь сказать мне, где я должен установить флаги?

main.cpp:

#include <QApplication> 
#include "JokerWindow.h" 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    JokerWindow w(&settings); 
    w.show(); 
    return a.exec(); 
} 

JokerWindow.h

#ifndef JOKERWINDOW_H 
#define JOKERWINDOW_H 

#include <QMainWindow> 
#include "PhCommonUI/PhMediaPanelDialog.h" 

namespace Ui { 
class JokerWindow; 
} 

class JokerWindow : public QMainWindow 
{ 
    Q_OBJECT 
public: 
    explicit JokerWindow(QSettings *settings); 
    ~JokerWindow(); 

private: 
    PhMediaPanelDialog _mediaPanel; 
}; 
#endif // MAINWINDOW_H 

JokerWindow.cpp

#include "JokerWindow.h" 
#include "ui_JokerWindow.h" 

JokerWindow::JokerWindow(QSettings *settings) : 
    QMainWindow(NULL), 
    ui(new Ui::JokerWindow) 
{ 
    _mediaPanel.show(); 
} 
JokerWindow::~JokerWindow() 
{ 
    delete ui; 
} 

PhMediaPanel.h

#ifndef PHMEDIAPANEL_H 
#define PHMEDIAPANEL_H 

#include <QWidget> 
namespace Ui { 
    class PhMediaPanel; 
} 
class PhMediaPanel : public QWidget 
{ 
    Q_OBJECT 
public: 
    explicit PhMediaPanel(QWidget *parent = 0); 
    ~PhMediaPanel(); 
private: 
    Ui::PhMediaPanel *ui; 
}; 

#endif // PHMEDIAPANEL_H 

PhMediaPanel.cpp

#include "PhMediaPanel.h" 
#include "ui_PhMediaPanel.h" 
PhMediaPanel::PhMediaPanel(QWidget *parent) : 
    QWidget(parent) 
{ 
    ui->setupUi(this); 
} 
PhMediaPanel::~PhMediaPanel() 
{ 
    delete ui; 
} 
+0

Вы пробовали: * setWindowFlags (getWindowFlags() | Qt :: FramelessWindowHint); * – hyde

+0

Также убедитесь, что вы делаете, что окна верхнего уровня! – hyde

+0

@hyde Что вы подразумеваете под верхним уровнем? Один сверху? Первый уровень Родитель? Последний ребенок уровня? –

ответ

25

setWindowFlags (Qt :: Window | Qt :: FramelessWindowHint) работает для меня. Убедитесь, что вы применяете настройку в окне самого высокого уровня. например, на main.cpp См. изображение ниже, пропустите проводную 3D-вещь, проверив некоторый код OpenGL. enter image description here

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    WoodPuppet window; 

    window.setWindowFlags(Qt::Window | Qt::FramelessWindowHint); 
    window.show(); 
} 
+0

Взгляните на мой результат при установке флагов в 'Qt :: Window | Qt :: FramelessWindowHint' –

+0

hyde упомянутый одно и то же. Я использовал точно такую ​​же функцию, которую вы использовали «setWindowFlags (Qt :: Window | Qt :: FramelessWindowHint)» в моем самом верхнем окне. В основной функции см. Редактирование в моем сообщении. –

+0

А, у меня есть, у вас есть еще одно окно для показа видео ?. где вы инициализируете эту панель управления. Я думаю, вы положили setWindowFlags (Qt :: Window | Qt :: FramelessWindowHint) на один из ваших внутренних виджета. Я попытался сделать setWindowFlags (Qt :: Window | Qt :: FramelessWindowHint) в моем виджетах OpenGL, он также исчезнет. Если вы можете опубликовать некоторый код вашего процесса инициализации, это может помочь. –

Смежные вопросы