Wie zu zwingen, QWidget werden in einem separaten Fenster angezeigt?
Habe ich
class MyWidget : public QWidget
{
Q_OBJECT
public:
explicit MyWidget (QWidget *parent);
//...
};
//here is ALL the code in MyWidget constructor
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
{
glWidget = new GLWidget(this, cluster);
QHBoxLayout *mainLayout = new QHBoxLayout;
mainLayout->addWidget(glWidget);
setLayout(mainLayout);
setWindowTitle("Visualization");
}
und das Hauptfenster MainWindow w;
.
Möchte ich
- zum erstellen neuer Instanzen von MyWidget von
w
; - dass Instanzen zerstört, nachdem
QCloseEvent
oder mitw
(jetzt sind Sie zerstört nur nachQCloseEvent
); - dass Instanzen erscheinen in neuen Fenstern.
Erstelle ich eine neue Instanz von MyWidget
wie diese:
void MainWindow::visualize()
{
MyWidget *widg = new MyWidget(this); //or widg = new MyWidget(0)
widg->show();
widg->raise();
widg->activateWindow();
}
Wenn ich versuche zu erstellen widg
mit w
als parent
, widg
innerhalb der w
(in der linken oberen Ecke).
Was ist der einfachste und beste Weg, um das zu beheben?
Dank!
InformationsquelleAutor artyom.stv | 2011-03-04
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzufügen
Qt::Window
an den Konstruktor vonQWidget
sollte das tun, was Sie wollen.Als es ist geschrieben in QWidget-Konstruktor-Referenz für ein widget zu einem Fenster seiner Eltern sollte 0 sein. Aber wenn die Eltern von 0-Herren-der Elternteil ist "SIE" 🙂 - ich.e Sie haben sich um Sie zu kümmern - halten Sie Sie für einige erreichbaren Ort und zu vernichten, wenn die Zeit angemessen ist (entweder auf close-Ereignis, Destruktor oder unter Verwendung von shared Zeigern).