かなり長い間これを行おうとしていて、見つけたすべてのフォーラム投稿からアドバイスを受けましたが、それでも解決できません。これは私の現在のコードであり、プログレスバーのチャンクの色を変更したいと思います。色を除いて、他のすべての設定が機能しています。
メインウィンドウの1つのサブビューを埋める私のワークスペースオブジェクト。
Workspace::Workspace( QWidget* parent) : QWidget( parent )
{
QTableView* tableView = new QTableView();
// ...
tableView->setItemDelegate(new ProgressBarDelegate);
}
デリゲート.cppは次のようになります。
ProgressBarDelegate::ProgressBarDelegate( QObject* parent )
: QStyledItemDelegate(parent)
{
}
void ProgressBarDelegate::paint( QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
if (index.column() == 2)
{
int progressPercentage = index.model()->data(index, Qt::DisplayRole).toInt();
QStyleOptionProgressBarV2 progressBarOption;
progressBarOption.rect = QRect(option.rect.x(), option.rect.y() + 5 , option.rect.width(), option.rect.height() / 1.5);
progressBarOption.minimum = 0;
progressBarOption.maximum = 100;
progressBarOption.progress = progressPercentage;
QPalette pal = progressBarOption.palette;
QColor col = QColor(35, 35,25);
pal.setColor(QPalette::Highlight, col); // or QPalette::Window doesnt matter
progressBarOption.palette = pal;
if(option.state & QStyle::State_Selected)
{
}
QApplication::style()->drawControl( QStyle::CE_ProgressBar,
&progressBarOption,
painter);
}
else
{
QStyledItemDelegate::paint(painter, option, index);
}
}
現在、私が何をしても、色はOSX標準のライトグレーから変わりません。
重要な場合は、OSX10.6.7およびQt4.8.1を実行します。ありがとう!
編集:
私は次のことができました:
app.setStyleSheet("QScrollBar:horizontal { border: 2px solid green;background: cyan;height: 15px;margin: 0px 20px 0 20px;}");
しかし、私がこれを行うとき:
app.setStyleSheet("QProgressBar:horizontal { border: 1px solid gray; border-radius: 3px; background: white; padding: 1px; }");
プログレスバーの変更はありません。私は理論的にはプログレスバーオブジェクトを作成していません。デリゲートでデータを表示する方法を設定するだけです。しかし、確かに、私はこれを正しくやりたいと思う最初の人になることはできませんか?
また、これが機能しない場合、テーブルビューでこれを(スタイル付きのプログレスバーを使用して)行うにはどうすればよいですか?