[consider merging] Qt4 compatibility

This commit is contained in:
Matthias Koefferlein 2022-10-16 21:53:17 +02:00
parent dc927717c2
commit c6e457d3d6
4 changed files with 46 additions and 15 deletions

View File

@ -27,8 +27,6 @@
#include "layQtTools.h" #include "layQtTools.h"
#include "tlException.h" #include "tlException.h"
#include <QSignalBlocker>
namespace ant namespace ant
{ {
@ -483,7 +481,7 @@ PropertiesPage::update_with (const ant::Object &obj)
text += "\n"; text += "\n";
} }
QSignalBlocker blocker (points_edit); lay::SignalBlocker blocker (points_edit);
points_edit->setPlainText (tl::to_qstring (text)); points_edit->setPlainText (tl::to_qstring (text));
} }

View File

@ -82,6 +82,23 @@ const std::string cfg_macro_editor_watch_expressions ("macro-editor-watch-expres
const std::string cfg_macro_editor_debugging_enabled ("macro-editor-debugging-enabled"); const std::string cfg_macro_editor_debugging_enabled ("macro-editor-debugging-enabled");
const std::string cfg_macro_editor_ignore_exception_list ("macro-editor-ignore-exception-list"); const std::string cfg_macro_editor_ignore_exception_list ("macro-editor-ignore-exception-list");
// -----------------------------------------------------------------------------------------
/**
* @brief Finds the tab bar widget for a QTabWidget
*/
static QTabBar *tab_bar_of (QTabWidget *tab)
{
#if QT_VERSION >= 0x50000
return tab->tabBar ();
#else
// Qt 4 does not have a public method for getting the QTabBar
QTabBar *tb = tab->findChild<QTabBar *> ();
tl_assert (tb != 0);
return tb;
#endif
}
// ----------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------
// Implementation of the macro template selection dialog // Implementation of the macro template selection dialog
@ -324,7 +341,11 @@ MacroEditorDialog::MacroEditorDialog (lay::Dispatcher *pr, lym::MacroCollection
macro_tree->header ()->hide (); macro_tree->header ()->hide ();
// TODO: that is supposed to enable the horizontal scroll bar, but it doesn't: // TODO: that is supposed to enable the horizontal scroll bar, but it doesn't:
macro_tree->header ()->setStretchLastSection (false); macro_tree->header ()->setStretchLastSection (false);
#if QT_VERSION >= 0x50000
macro_tree->header ()->setSectionResizeMode (QHeaderView::ResizeToContents); macro_tree->header ()->setSectionResizeMode (QHeaderView::ResizeToContents);
#else
macro_tree->header ()->setResizeMode (QHeaderView::ResizeToContents);
#endif
macro_tree->setItemDelegate (new EditRoleDelegate (macro_tree)); macro_tree->setItemDelegate (new EditRoleDelegate (macro_tree));
@ -1546,7 +1567,7 @@ MacroEditorDialog::eventFilter (QObject *obj, QEvent *event)
} }
} else if (obj == tabWidget->tabBar () && dynamic_cast<QMouseEvent *> (event) != 0) { } else if (obj == tab_bar_of (tabWidget) && dynamic_cast<QMouseEvent *> (event) != 0) {
// just spy on the events, don't eat them // just spy on the events, don't eat them
QMouseEvent *mouse_event = dynamic_cast<QMouseEvent *> (event); QMouseEvent *mouse_event = dynamic_cast<QMouseEvent *> (event);
@ -2306,7 +2327,7 @@ MacroEditorDialog::close_many (int r2c)
BEGIN_PROTECTED BEGIN_PROTECTED
int ci = tabWidget->tabBar ()->tabAt (m_mouse_pos); int ci = tab_bar_of (tabWidget)->tabAt (m_mouse_pos);
if (ci < 0) { if (ci < 0) {
return; return;
} }

View File

@ -33,10 +33,17 @@
#include <QStackedLayout> #include <QStackedLayout>
#include <QAbstractItemModel> #include <QAbstractItemModel>
#include <QModelIndex>
namespace lay namespace lay
{ {
#if QT_VERSION >= 0x50000
typedef qint64 tree_id_type;
#else
typedef qint32 tree_id_type;
#endif
// ---------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------------
// PropertiesTreeModel definition and implementation // PropertiesTreeModel definition and implementation
@ -56,14 +63,14 @@ public:
QVariant data (const QModelIndex &index, int role) const QVariant data (const QModelIndex &index, int role) const
{ {
if (role == Qt::DisplayRole) { if (role == Qt::DisplayRole) {
if (index.internalId () < mp_dialog->properties_pages ().size ()) { if (tree_id_type (index.internalId ()) < tree_id_type (mp_dialog->properties_pages ().size ())) {
return tl::to_qstring (mp_dialog->properties_pages () [index.internalId ()]->description (index.row ())); return tl::to_qstring (mp_dialog->properties_pages () [index.internalId ()]->description (index.row ()));
} else if (index.row () < int (mp_dialog->properties_pages ().size ())) { } else if (index.row () < int (mp_dialog->properties_pages ().size ())) {
return tl::to_qstring (mp_dialog->properties_pages () [index.row ()]->description ()); return tl::to_qstring (mp_dialog->properties_pages () [index.row ()]->description ());
} }
} else if (role == Qt::DecorationRole) { } else if (role == Qt::DecorationRole) {
QIcon icon; QIcon icon;
if (index.internalId () < mp_dialog->properties_pages ().size ()) { if (tree_id_type (index.internalId ()) < tree_id_type (mp_dialog->properties_pages ().size ())) {
icon = mp_dialog->properties_pages () [index.internalId ()]->icon (index.row (), m_icon_width, m_icon_height); icon = mp_dialog->properties_pages () [index.internalId ()]->icon (index.row (), m_icon_width, m_icon_height);
} else if (index.row () < int (mp_dialog->properties_pages ().size ())) { } else if (index.row () < int (mp_dialog->properties_pages ().size ())) {
icon = mp_dialog->properties_pages () [index.row ()]->icon (m_icon_width, m_icon_height); icon = mp_dialog->properties_pages () [index.row ()]->icon (m_icon_width, m_icon_height);
@ -78,7 +85,7 @@ public:
Qt::ItemFlags flags (const QModelIndex &index) const Qt::ItemFlags flags (const QModelIndex &index) const
{ {
Qt::ItemFlags f = QAbstractItemModel::flags (index); Qt::ItemFlags f = QAbstractItemModel::flags (index);
if (index.internalId () >= mp_dialog->properties_pages ().size () && ! mp_dialog->properties_pages () [index.row ()]->can_apply_to_all ()) { if (tree_id_type (index.internalId ()) >= tree_id_type (mp_dialog->properties_pages ().size ()) && ! mp_dialog->properties_pages () [index.row ()]->can_apply_to_all ()) {
f &= ~Qt::ItemIsSelectable; f &= ~Qt::ItemIsSelectable;
} }
return f; return f;
@ -86,22 +93,22 @@ public:
bool hasChildren (const QModelIndex &parent) const bool hasChildren (const QModelIndex &parent) const
{ {
return (! parent.isValid () || parent.internalId () >= mp_dialog->properties_pages ().size ()); return (! parent.isValid () || tree_id_type (parent.internalId ()) >= tree_id_type (mp_dialog->properties_pages ().size ()));
} }
QModelIndex index (int row, int column, const QModelIndex &parent) const QModelIndex index (int row, int column, const QModelIndex &parent) const
{ {
if (! parent.isValid ()) { if (! parent.isValid ()) {
return createIndex (row, column, qint64 (mp_dialog->properties_pages ().size ())); return createIndex (row, column, tree_id_type (mp_dialog->properties_pages ().size ()));
} else { } else {
return createIndex (row, column, qint64 (parent.row ())); return createIndex (row, column, tree_id_type (parent.row ()));
} }
} }
QModelIndex parent (const QModelIndex &child) const QModelIndex parent (const QModelIndex &child) const
{ {
if (child.internalId () < mp_dialog->properties_pages ().size ()) { if (tree_id_type (child.internalId ()) < tree_id_type (mp_dialog->properties_pages ().size ())) {
return createIndex (int (child.internalId ()), child.column (), qint64 (mp_dialog->properties_pages ().size ())); return createIndex (int (child.internalId ()), child.column (), tree_id_type (mp_dialog->properties_pages ().size ()));
} else { } else {
return QModelIndex (); return QModelIndex ();
} }
@ -133,7 +140,7 @@ public:
if (page_index < 0) { if (page_index < 0) {
return QModelIndex (); return QModelIndex ();
} else { } else {
return createIndex (object_index, 0, qint64 (page_index)); return createIndex (object_index, 0, tree_id_type (page_index));
} }
} }
@ -142,7 +149,7 @@ public:
if (page_index < 0) { if (page_index < 0) {
return QModelIndex (); return QModelIndex ();
} else { } else {
return createIndex (page_index, 0, qint64 (mp_dialog->properties_pages ().size ())); return createIndex (page_index, 0, tree_id_type (mp_dialog->properties_pages ().size ()));
} }
} }
@ -214,7 +221,11 @@ PropertiesDialog::PropertiesDialog (QWidget * /*parent*/, db::Manager *manager,
// if at end disable the "Next" button and return (this may only happen at the first call) // if at end disable the "Next" button and return (this may only happen at the first call)
mp_tree_model = new PropertiesTreeModel (this, mp_ui->tree->iconSize ().width (), mp_ui->tree->iconSize ().height ()); mp_tree_model = new PropertiesTreeModel (this, mp_ui->tree->iconSize ().width (), mp_ui->tree->iconSize ().height ());
mp_ui->tree->setModel (mp_tree_model); mp_ui->tree->setModel (mp_tree_model);
#if QT_VERSION >= 0x50000
mp_ui->tree->header()->setSectionResizeMode (QHeaderView::ResizeToContents); mp_ui->tree->header()->setSectionResizeMode (QHeaderView::ResizeToContents);
#else
mp_ui->tree->header()->setResizeMode (QHeaderView::ResizeToContents);
#endif
mp_ui->tree->expandAll (); mp_ui->tree->expandAll ();
if (mp_properties_pages.empty ()) { if (mp_properties_pages.empty ()) {

View File

@ -40,6 +40,7 @@
#include <memory> #include <memory>
class QStackedLayout; class QStackedLayout;
class QModelIndex;
namespace Ui namespace Ui
{ {