Python Forum
Convert python to Qt c++
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Convert python to Qt c++
#1
This is the code I want to convert to Qt c++:
    def createEditor(self, parent, option, index):
        # column of combo box 'position'
        positionColumn = 2
        print("myDelegate.createEditor index.column()=" + str(index.column()) + " option=" + str(option) )
        if index.column() == positionColumn:
            editor = QSqlRelationalDelegate.createEditor(self, parent, option, index)
            if isinstance(editor, QComboBox):
                editor.model().select()
            return editor
        else:
            return super(myDelegate, self).createEditor(parent, option, index)
This is what I 've done so far:
QWidget *BookDelegate::createEditor(QWidget *parent,
                                    const QStyleOptionViewItem &option,
                                    const QModelIndex &index) const
{
    int positionColumn = 2;
    qDebug()<< "BookDelegate.createEditor index.column()=" << (index.column()) << " option=" << option ;
    if (index.column() == positionColumn){
        QWidget *editor = QSqlRelationalDelegate::createEditor(parent, option, index);   ///???????????
        QComboBox* myCombo = qobject_cast <QComboBox*>(editor);               ///?????????????
            myCombo->model()->select();                                                    ///??????????????/
            return editor;

    }
The 3 lines with the question marks are the problematic ones.
On the second one I get this: error: no member named 'select' in 'QAbstractItemModel'

Any help is welcome.
Reply
#2
This is the code I ended up with (from the QSqlRelationalDelegate 's code), and works!
Any comments are welcome.
    int positionColumn = 2;
    qDebug()<< "BookDelegate.createEditor index.column()=" << (index.column()) << " option=" << option ;
    if (index.column() == positionColumn){
        const QSqlRelationalTableModel *sqlModel = qobject_cast<const QSqlRelationalTableModel *>(index.model());
        QSqlTableModel *childModel = sqlModel ? sqlModel->relationModel(index.column()) : nullptr;
        if (!childModel)
            return QStyledItemDelegate::createEditor(parent, option, index);

        QComboBox *combo = new QComboBox(parent);
        combo->setModel(childModel);
        combo->setModelColumn(1);
        combo->installEventFilter(const_cast<BookDelegate *>(this));
        childModel->select();
        return combo;
    }
Reply


Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020