【问题标题】:QTableWidget with stylesheet don’t scroll items带有样式表的 QTableWidget 不滚动项目
【发布时间】:2012-02-28 15:54:53
【问题描述】:

在下面的代码中有两个样式表: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 上。

【问题讨论】:

  • 在 Linux (Ubuntu 11.10) 上运行它,使用两个样式表之间的行为没有明显差异。除了一个是绿色的,一个不是绿色的,它看起来工作正常。 “标签正在滚动”是什么意思?
  • @Chris:我做了一个截图(dl.dropbox.com/u/8720074/…)。如您所见,垂直滚动条位于底部,但我们看到的是标签 0、1、2、3,而不是标签 16、17、18、19。
  • 刚刚向 QT 提交了一个问题:bugreports.qt-project.org/browse/QTBUG-25180

标签: qt stylesheet qtablewidget


【解决方案1】:

根据我的经验,当我在 MAC 上运行我的应用程序时,我经常从 NSScrollWheel 收到调试消息。

我建议在 MAC 上使用 qt 时避免滚动视图

【讨论】:

  • 嗯,回答“如果你不能做某事,就不要做”并不能真正回答问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-01
相关资源
最近更新 更多