Как изменить тип компонента в QT Creator?
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 06.09.22 11:29
Оценка:
У меня стоит Qt Creator 4.12.2 .

Я создал класс QMyTableWidget, который является потомком класса QTableWIdget.

файл qmytablewidget.h :

#ifndef QMYTABLEWIDGET_H
#define QMYTABLEWIDGET_H

#include <QTableWidget>

class QMyTableWidget : public class QTableWidget
{
    public:
    QMyTableWIdget(QWidget *parent=nullptr);
    QMyTableWidget(int rows, in columns, QWidget *parent=nullptr);
    // прочие данные и методы класса QMyTableWidget;
};


файл qmytablewidget.cpp :

QMyTableWidget::QMyTableWidget(QWidget *parent)
{
    QTableWidget(); // почему-то компилятор ругается на QTableWIdget(parent);
    // инициализация прочих полей класса QMyTableWidget;
}

QMyTableWidget::QMyTableWidget(int rows, int columns, QWidget *parent)
{
    QTableWidget(rows, columns, parent);
    // инициализация прочих полей класса QMyTableWidget;
}

// реализация прочих методов класса QMyTableWidget;


И есть компонент таблицы tableWidget_8 , который относится к типу QTableWidget. Как сделать так, чтобы этот компонент таблицы относился бы к классу QMyTableWidget, а не к QTableWidget ?
1613 г. = 2024 г.
Re: Как изменить тип компонента в QT Creator?
От: SаNNy Россия  
Дата: 06.09.22 11:32
Оценка: 4 (1)
Здравствуйте, RussianFellow, Вы писали:

RF>И есть компонент таблицы tableWidget_8 , который относится к типу QTableWidget. Как сделать так, чтобы этот компонент таблицы относился бы к классу QMyTableWidget, а не к QTableWidget ?


https://doc.qt.io/qt-6/designer-using-custom-widgets.html
Re: Как изменить тип компонента в QT Creator?
От: K13 http://akvis.com
Дата: 09.09.22 16:09
Оценка:
RF>файл qmytablewidget.cpp :

RF>QMyTableWidget::QMyTableWidget(QWidget *parent)

RF>{
RF> QTableWidget(); // почему-то компилятор ругается на QTableWIdget(parent);
RF> // инициализация прочих полей класса QMyTableWidget;
RF>}
QMyTableWidget::QMyTableWidget(QWidget *parent) : QTableWidget( parent )
{
    // инициализация прочих полей класса QMyTableWidget;
}


потому что QTableWidget(); -- это НЕ вызов предка.
это создание временного локального объекта без имени, который убивается после ;

иногда это полезно: например, освободить память std::vector, т.к. .clear() режет size() сохраняя .capacity():
std::vector<int>().swap( myVector );
Отредактировано 09.09.2022 16:14 K13 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.