Adding pushButton on QFileDialog
Solved
General and Desktop
-
Hi
I tried to add a pushButton on QFileDialog byclass FileDialog : public QFileDialog { QPushButton *pb; public: FileDialog(QWidget *parent) : QFileDialog(parent){} void addWidget() { QGridLayout* mainLayout = dynamic_cast <QGridLayout*>(this->layout()); if( !mainLayout){ qDebug()<<"mainLayout is NULL"; }else{ QHBoxLayout *hbl =new QHBoxLayout(0); pb =new QPushButton(QString("My checkbox")); hbl->addWidget(pb); int num_rows = mainLayout->rowCount(); qDebug()<<"num_rows: "<<num_rows; mainLayout->addLayout(hbl, num_rows, 0, 1, -1); } } }; When I executed FileDialog *fd=new FileDialog(this); fd->addWidget();
I got the result,
"mainLayout is NULL"
It means I could not get the QGridLayout* by this->layout().
Is it a bug? I use Qt 5.6.2 in windows7. -
Try to use http://doc.qt.io/qt-5/qobject.html#qobject_cast . Or just pass layout pointer as argument in your function.
-
getOpenFileName
is a static function. It does not care about any changes you made tofd
.You will have to do everything of the static function yourself:
fd->setWindowTitle("Open Image"); fd->setAcceptMode(QFileDialog::AcceptOpen); fd->setDirectory("/home/jana"); fd->setFileMode(QFileDialog::ExistingFile); fd->setViewMode(QFileDialog::Detail); fd->setNameFilter(tr("Image Files (*.png *.jpg *.bmp)")); if (!fd->exec()) //cancelled return; fileName=fd->selectedFiles().first();
-Michael.