QTableWidget с таблицей стилей не прокручивает элементы - PullRequest
3 голосов
/ 28 февраля 2012

В следующем коде есть две таблицы стилей: problemStylesheet и okStylesheet.Все отлично работает, когда я использую okStylesheet для QTableWidget.Метки прокручиваются.Проблема в том, что метки не прокручиваются, если я использую problemStylesheet .Что может вызвать эту проблему?Я пытался найти решение, но не смог найти какую-либо информацию, которая может быть полезна.

Qt 4.8.0, Mac OS X Lion.

Пример кода:

#include <QtGui>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QWidget *baseWidget = new QWidget;

    QTableWidget *tableWidget = new QTableWidget(baseWidget);
    tableWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    tableWidget->setColumnCount(1);

    tableWidget->horizontalHeader()->setVisible(false);
    tableWidget->verticalHeader()->setVisible(false);

    tableWidget->horizontalHeader()->setStretchLastSection(true);
    tableWidget->verticalHeader()->setDefaultSectionSize(52);

    tableWidget->setShowGrid(false);

    tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
    tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);

    QString problemStylesheet = "QTableWidget { background-color: green; } QTableWidget::item { border: 1px solid #000; }";
    QString okStylesheet = "QTableWidget { } QTableWidget::item { border: 1px solid #000; }";

    tableWidget->setStyleSheet(problemStylesheet);

    tableWidget->setRowCount(20);
    for (int i = 0; i < 20; ++i) {
        QLabel *label = new QLabel(QString("").setNum(i), tableWidget);
        label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
        tableWidget->setCellWidget(i, 0, label);
    }

    QVBoxLayout *verticalLayout = new QVBoxLayout();
    verticalLayout->setMargin(0);
    verticalLayout->setSpacing(0);
    verticalLayout->setContentsMargins(0, 0, 0, 0);

    baseWidget->setLayout(verticalLayout);

    verticalLayout->addWidget(tableWidget);

    baseWidget->show();

    return app.exec();
}

ОБНОВЛЕНИЕ: Кажется, что все хорошо в Linux и Windows.Таким образом, проблема появляется только в Mac OS.

1 Ответ

0 голосов
/ 09 октября 2012

По своему опыту, я часто получал отладочные сообщения от NSScrollWheel, когда запускал свои приложения на MAC.

Я бы рекомендовал избегать прокрутки при использовании qt на MAC

...