Varför kan man inte sätta en QWidget i en QTableWidget? OOP klurig fråga i C++
En C++ fråga angående om QTableWidget.
QTableWidget är en UI-klass för att få en tabell upp på en form. Väldigt smidig klass och enkel att använda...men!
Med QTableWidget så kan man faktiskt ersätta varje cell i en tabell med t.ex. en knapp QPushButton eller något annat kul.
Jag har problem att tillsätta en QWidget som brukar användas som arvsklass närman vill skapa en form.
Låt oss säga att vi har denna kod.
// Vi sätter in UI formen DatabaseMeasurementType() i en cell
QTableWidget cellTable.setCellWidget(rows-1, i, new DatabaseMeasurementType());
// Vi plockar fram widget:en från cellen
QWidget *p = cellTable.cellWidget(rows-1, i);
// Jag kollar om p är null
if(p == nullptr)
qDebug() << "yes"; // Skriver ut på terminalen
Den visar dessutom yes.
Klassen DatabaseMeasurementType ser ut så här
#include <QWidget>
#include <QTableWidgetItem>
namespace Ui {
class DatabaseMeasurementType;
}
class DatabaseMeasurementType : public QWidget
{
Q_OBJECT
public:
explicit DatabaseMeasurementType(QWidget *parent = nullptr);
~DatabaseMeasurementType();
private:
Ui::DatabaseMeasurementType *ui;
};
#endif // DATABASEMEASUREMENTTYPE_H
Här ser vi att konstruktören har ett standardargument som är null.
QWidget *parent = nullptr
Kan detta vara orsaken varför qDebug() skriver ut null?
Jag menar, borde jag inte få min form DatabaseMeasurementType i varje cell istället?
Källfilen ser ut så här.
#include "databasemeasurementtype.h"
#include "ui_databasemeasurementtype.h"
DatabaseMeasurementType::DatabaseMeasurementType(QWidget *parent) :
QWidget(parent),
ui(new Ui::DatabaseMeasurementType)
{
ui->setupUi(this);
}
DatabaseMeasurementType::~DatabaseMeasurementType()
{
delete ui;
}