ich bin neu in Qt und c++ und hoffe mir kann jemand weiterhelfen.
Ich möchte den Hintergrund einzelner Zellen färben und weiß noch nicht richtig wie das geht.
Zurzeit probiere ich es mit "QItemDelegate" komme aber nicht richtig voran (vileicht bin ich auch auf dem Holzweg).
Ich weiß hier wurde schon mal etwas zu diesem Thema geschrieben, aber ist es auf diesem Weg auf grundsätzlich möglich?
Wenn ja wie genau?
Hier mal der Code:
delegate.h
Code: Alles auswählen
#ifndef DELEGATE_H
#define DELEGATE_H
#include "QItemDelegate"
#include "QObject"
#include "QModelIndex"
#include "QSize"
#include "QBrush"
class delegate : public QItemDelegate
{
Q_OBJECT
public:
explicit delegate(QObject *parent = nullptr);
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;
void setEditorData(QWidget *editor, const QModelIndex &index) const;
void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;
//void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const;
signals:
public slots:
};
#endif // DELEGATE_H
Code: Alles auswählen
#include "delegate.h"
delegate::delegate(QObject *parent) :
QItemDelegate (parent)
{
}
QWidget *delegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QPalette *tableanpassen = new QPalette(parent);
}
void delegate::setEditorData(QWidget *editor, const QModelIndex &index) const
{
int value = index.model()->data(index,Qt::EditRole).toInt();
}
void delegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
{
}
Code: Alles auswählen
test_screen::test_screen(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::test_screen)
{
ui->setupUi(this);
// -- TabelView
// mytableanpassen = new Tableanpassen(this);
mydelegate = new delegate(this);
model = new QSqlQueryModel(this);
model->setQuery("SELECT * FROM WekzeugWechselWarnung");
model->setHeaderData(0, Qt::Horizontal, tr("Werkzeug Nr."));
model->setHeaderData(1, Qt::Horizontal, tr("Zeit"));
model->setData(model->index(1,2),QBrush(Qt::red), Qt::BackgroundRole);
ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->tableView->setModel(model);
ui->tableView->setItemDelegate(mydelegate);
Code: Alles auswählen
#ifndef TEST_SCREEN_H
#define TEST_SCREEN_H
#include <QMainWindow>
#include "QSqlQueryModel"
//#include "tableanpassen.h"
#include "delegate.h"
namespace Ui {
class test_screen;
}
class test_screen : public QMainWindow
{
Q_OBJECT
public:
explicit test_screen(QWidget *parent = nullptr);
~test_screen();
private:
Ui::test_screen *ui;
QSqlQueryModel *model;
QSqlQueryModel *model_2;
delegate *mydelegate;
// Tableanpassen *mytableanpassen;
};
#endif // TEST_SCREEN_H