Qt5: QDialog extension/orientation is deprecated [-Wdeprecated-declarations]

This commit is contained in:
wmayer
2020-06-11 22:21:21 +02:00
committed by wwmayer
parent e00ff1d78d
commit 98b1116424
2 changed files with 53 additions and 10 deletions

View File

@@ -28,6 +28,7 @@
# include <QCompleter>
# include <QComboBox>
# include <QDesktopServices>
# include <QDialogButtonBox>
# include <QDir>
# include <QGridLayout>
# include <QGroupBox>
@@ -463,6 +464,7 @@ void FileDialog::saveLocation(const QString& dirName)
FileOptionsDialog::FileOptionsDialog( QWidget* parent, Qt::WindowFlags fl )
: QFileDialog( parent, fl )
, extensionPos(ExtensionRight)
{
extensionButton = new QPushButton( this );
extensionButton->setText( tr( "Extended" ) );
@@ -471,6 +473,10 @@ FileOptionsDialog::FileOptionsDialog( QWidget* parent, Qt::WindowFlags fl )
setOption(QFileDialog::DontUseNativeDialog);
#endif
// This is an alternative to add the button to the grid layout
//QDialogButtonBox* box = this->findChild<QDialogButtonBox*>();
//box->addButton(extensionButton, QDialogButtonBox::ActionRole);
//search for the grid layout and add the new button
QGridLayout* grid = this->findChild<QGridLayout*>();
#if QT_VERSION >= 0x040500
@@ -546,22 +552,55 @@ void FileOptionsDialog::accept()
void FileOptionsDialog::toggleExtension()
{
QWidget* w = extension();
if (w)
showExtension(!w->isVisible());
if (extensionWidget) {
bool showIt = !extensionWidget->isVisible();
if (showIt) {
oldSize = size();
QSize s(extensionWidget->sizeHint()
.expandedTo(extensionWidget->minimumSize())
.boundedTo(extensionWidget->maximumSize()));
if (extensionPos == ExtensionRight) {
setFixedSize(width() + s.width(), height());
}
else {
setFixedSize(width(), height() + s.height());
}
extensionWidget->show();
}
else {
extensionWidget->hide();
setFixedSize(oldSize);
}
}
}
void FileOptionsDialog::setOptionsWidget(FileOptionsDialog::ExtensionPosition pos, QWidget* w, bool show)
{
if (pos == ExtensionRight) {
setExtension(w);
setOrientation(Qt::Horizontal);
extensionPos = pos;
extensionWidget = w;
if (extensionWidget->parentWidget() != this)
extensionWidget->setParent(this);
QGridLayout* grid = this->findChild<QGridLayout*>();
if (extensionPos == ExtensionRight) {
int cols = grid->columnCount();
grid->addWidget(extensionWidget, 0, cols, -1, -1);
setMinimumHeight(extensionWidget->height());
}
else if (pos == ExtensionBottom) {
setExtension(w);
setOrientation(Qt::Vertical);
else if (extensionPos == ExtensionBottom) {
int rows = grid->rowCount();
grid->addWidget(extensionWidget, rows, 0, -1, -1);
setMinimumWidth(extensionWidget->width());
}
// Instead of resizing the dialog we can fix the layout size.
// This however, doesn't work nicely when the extension widget
// is higher/wider than the dialog.
//grid->setSizeConstraint(QLayout::SetFixedSize);
oldSize = size();
w->hide();
if (show)
toggleExtension();
@@ -569,7 +608,7 @@ void FileOptionsDialog::setOptionsWidget(FileOptionsDialog::ExtensionPosition po
QWidget* FileOptionsDialog::getOptionsWidget() const
{
return this->extension();
return extensionWidget;
}
// ======================================================================

View File

@@ -28,6 +28,7 @@
#include <QFileIconProvider>
#include <QFileSystemModel>
#include <QCompleter>
#include <QPointer>
class QButtonGroup;
class QGridLayout;
@@ -105,7 +106,10 @@ protected Q_SLOTS:
void toggleExtension();
private:
QSize oldSize;
ExtensionPosition extensionPos;
QPushButton* extensionButton;
QPointer<QWidget> extensionWidget;
};
// ----------------------------------------------------------------------