2015-12-09 3 views
0

Я хочу создать индивидуальный макет здесь: http://doc.qt.io/qt-5/qtwidgets-layouts-flowlayout-flowlayout-cpp.htmldoLayout: как установитьGeometry поверх другого виджета?

Я хочу, чтобы какой-то образец положил флажок поверх пользовательской кнопки. На данный момент есть

setGeometry(QRect(QPoint(... 

методы либо кнопки и флажок, но правильно ли я делаю это для кнопки или checkobox первый все еще появляется флажок «под» кнопку, и я не могу видеть/щелкнуть по нему.

Как я могу установить флажок поверх кнопки там?

+0

Можете ли вы предоставить код кнопки? –

+0

@AlexanderTyapkov это просто QWidget или QLayoutItem для макета, но изначально я ставлю его как QToolButton, а затем layout-> addWidget (myButton); – Cynede

+0

ОК. так что в основном вы используете пользовательский макет, но в то же время вы хотите установить флажок в верхней части кнопки с помощью setGeometry? Не будет ли проще поставить флажок внутри макета? –

ответ

1

Просто сделать флажок ребенок кнопки и вызовите setGeometry относительно кнопки. Дети всегда привлекаются к своим родителям.

QPushButton button("Hello World!", &w); 
button.setGeometry(0,0,100,100); 
button.show(); 

QCheckBox checkBox(&button); 
checkBox.setGeometry(button.rect()); 
checkBox.show(); 

Не нужно помещать галочку в макет.

1

Я только что сделал этот сниппет, чтобы установить флажок в верхней части кнопки, и это работает для меня.

#include "mainwindow.h" 
#include <QApplication> 
#include <QPushButton> 
#include <QCheckBox> 

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


    QWidget w; 

    QPushButton button("Hello World!", &w); 
    button.setGeometry(0,0,100,100); 
    button.show(); 

    QCheckBox checkBox(&w); 
    checkBox.setGeometry(30,30,50,50); 
    checkBox.show(); 

    w.show(); 
    return a.exec(); 
} 

и здесь, если вы измените порядок «родительства» и хотите Флажок все еще на вершине:

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

    QWidget w; 

QCheckBox checkBox(&w); 
checkBox.setGeometry(30,30,50,50); 
checkBox.show(); 

QPushButton button("Hello World!", &w); 
button.setGeometry(0,0,100,100); 
button.show(); 

checkBox.setParent(NULL); 
checkBox.setParent(&w); 

w.show(); 
return a.exec(); 

}

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