QTable probleme... (Scrollen und Cell Darst.)

Alles rund um die Programmierung mit Qt
Antworten
Thomas Lehmann
Beiträge: 4
Registriert: 27. Mai 2009 09:46

QTable probleme... (Scrollen und Cell Darst.)

Beitrag von Thomas Lehmann »

Hi!

Ich teste gerade Qt 4.4.3. (unter Windows mit Visual Studio 2008)
In einem Widget stelle ich eine QTable dar mit einem einfachem table model (siehe später). Probleme habe ich folgende zwei (vertikales scrollen):

a) Der Scrollbalken reagiert nicht richtig. Wenn ich mit der Maus versuche nach unten zu scrollen scrollt er - genau kann ich es nicht sagen - aber entweder macht er es je Item oder je Seite. Ich will aber einfach schnell in die Mitte ziehen - geht nicht!

b) Ich kann den Scrollbalken nicht nach oben ziehen um nach oben zu scrollen. Er scrollt trotzdem nach unten.

Das zweite Problem. Jede Zelle stelle so eine Box dar die wohl eine Checkbox sein soll. Meine Table is readonly und ich hab über den Typ der Zellen auch nichts gesagt. In den Beispielen der Dokumentation erscheinen die nicht. Was mach ich falsch (Checkbox soll weg)?

Also:

Code: Alles auswählen

class NewTableModel : public QAbstractTableModel
{
    public:
        int rowCount(const QModelIndex & parent = QModelIndex()) const
            { return 1000; }
        int columnCount(const QModelIndex & parent = QModelIndex()) const
            { return 5; }
        QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const
        {
            std::stringstream stream;
            stream << "row="   << index.row()
                   << ", col=" << index.column();
            return QVariant(QString(stream.str().c_str()));
        }
};//class NewTableModel
Und das Widget aussen herum:

Code: Alles auswählen

NewMatrix::NewMatrix(QWidget* widget)
    : QWidget(widget)
    , _tableModel(new NewTableModel)
    , _table(new QTableView(this))
{
    _table->setModel(_tableModel);
    _table->setAlternatingRowColors(true);
     _table->setSelectionMode(QAbstractItemView::SelectionMode::NoSelection);
    
    QBoxLayout* layout = new QBoxLayout(QBoxLayout::TopToBottom);
    layout->addWidget(_table);
    setLayout(layout);
}//NewMatrix
Dateianhänge
Wie es aussieht...
Wie es aussieht...
qt_testing.jpg (20.38 KiB) 1625 mal betrachtet
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Was gibst du bei flags() zurück und du kannst nicht für alle 'roles' den gleichen Wert zurückgeben, wenn du mit einer role nichts anfangen kannst, da gibt einen leeren QVariant zurück.
Thomas Lehmann
Beiträge: 4
Registriert: 27. Mai 2009 09:46

Beitrag von Thomas Lehmann »

Ok, ich habe nun in der Methode data folgendes eingefügt:

Code: Alles auswählen

            if (role != Qt::DisplayRole)
                return QVariant();
Nun sind diese Checkboxen weg. Super. Danke!
Die Flags hab ich nicht überschrieben.

Kann man mir nun auch noch beim Thema Scrollen helfen? Ich halte die Maus auf dem Slider geklickt kann ihn aber nicht in die Mitte des Scrollbalken ziehen. Ich muss warten, bis die Tabelle zu meiner Maus position hingescrollt ist. Außerdem kann ich die Tabelle über den Slider nicht wieder zurückscrollen (außer mit dem rechte Maustaste Menü).

Ach ja und das gilt horizontal wie auch vertikal!
Thomas Lehmann
Beiträge: 4
Registriert: 27. Mai 2009 09:46

Beitrag von Thomas Lehmann »

Auf einer Unix Machine mit Qt 4.3.1 hat alles funktioniert. Also sieht es danach aus, als ob:

a) Ein Fehler in einer neueren Version hereingekommen ist, oder ...
b) Der Fehler evtl. nur auf Windows auftritt.

Kann jemand etwas dazu sagen?
Antworten