2013-04-22 4 views
0

У меня есть класс MainWindow.cpp с несколькими изображениями, которые выдают сигнал clicked(). После того, как я нажал, я хочу открыть виджет с фиксированным размером внутри MainWindow, и я хочу, чтобы этот виджет мог быть перемещен до тех пор, пока он остается внутри класса MainWindow.Перетаскиваемый QWidget

Я искал пример кода, чтобы попытаться написать этот класс виджетов, в частности Qt MainWindow Example. Однако, когда одна из док-окон перетаскивается по экрану, отображается экранная панель заголовка операционной системы (которая позволяет вам максимизировать, минимизировать и закрывать окно). Я не хочу, чтобы этот заголовок отображался.

Как я могу создать этот класс перетаскиваемых виджетов?

+0

Прочитайте это: http://stackoverflow.com/questions/11172420/moving-object-with-mouse/ – hank

ответ

0

Проверить setTitleBarWidget

Установка в ничтожной виджет будет работать:

It is not possible to remove a title bar from a dock widget. 
However, a similar effect can be achieved by setting a default constructed QWidget 
as the title bar widget. 

Edit: По запросу:

yourDockableWidget->setTitleBarWidget(new QWidget(yourDockableWidget)); 

В примере вы следуете, вы можете сделать это в конструктор:

ColorSwatch::ColorSwatch(const QString &colorName, QWidget *parent, Qt::WindowFlags flags) 
: QDockWidget(parent, flags) 
{ 
/*...*/ 

setTitleBarWidget(new QWidget(this)); 

/*...*/ 
} 

Теперь ваш виджет не имеет SO titlebar при откреплении;

+0

Можете ли вы развернуть вторую часть своего поста? – DomX23

+0

Это действительно прямо из ссылки Qt docs, но сделано. – Trompa

+0

Отредактировано для добавления родителя в QWidget, поэтому он будет разрушать себя, когда paretn – Trompa

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