小编ste*_*eps的帖子

更改QProgressBar的颜色

我正在运行ubuntu 11.04.这就是我的进度条的样子:

进度条

我在批处理窗口中显示进度条(每批项目一个),并希望将它们用作状态指示器(绿色表示一切顺利,红色表示错误,......).

我已经尝试了几个建议,包括对这个几乎相同的问题所做的建议.不幸的是,我无法使它工作,关于定制QProgressBars 的文档对我也没有帮助,所以我非常感谢任何关于我做错的建议.

我按照建议将QProgressBar子类化,并尝试使用样式表和调色板(不是同时但作为替代).使用样式表,我不能使它看起来像常规进度条.改变颜色实际上就是我想做的事情,所以我认为通过使用调色板而不是样式表可以更容易做到这一点,但是调色板根本不会发生任何事情.

这是我为调色板尝试过的一个版本:

#include "myprogressbar.h"

#include <QtGui/QPalette>

MyProgressBar::MyProgressBar(QWidget *parent) :
    QProgressBar(parent)
{}

void MyProgressBar::onProgress(int value, int maximum, QString phase)
{
    setMaximum(maximum);
    setValue(value);
    setFormat(phase);

    QPalette p = this->palette();
    p.setColor(QPalette::Highlight, QColor(Qt::green));
    this->setPalette(p);
}

...
Run Code Online (Sandbox Code Playgroud)

我也试过这里建议的版本,但这也没有帮助.

c++ qt qprogressbar

13
推荐指数
3
解决办法
2万
查看次数

为什么我不能在QObject只是间接基础的类中设置QObject父类?

我有一个BatchItem继承的类QObject,还有几个继承自的类BatchItem:

#ifndef BATCHITEM_H
#define BATCHITEM_H

#include <QObject>

class BatchItem : public QObject
{
    Q_OBJECT
public:
    virtual void start() = 0;
    virtual void stop() = 0;

signals:
    /* ... some signals ... */

};

#endif // BATCHITEM_H
Run Code Online (Sandbox Code Playgroud)

继承自的类的示例BatchItem:

#ifndef VIDEOBATCHITEM_H
#define VIDEOBATCHITEM_H

#include "batchprocessing/batchitem.h"

#include <QtCore/QObject>

class VideoBatchItem : public BatchItem
{
    Q_OBJECT
public:
    explicit VideoBatchItem(/* ... */, QObject *parent = 0);

    void start();
    void stop();

private:
    /* ... some private member variables …
Run Code Online (Sandbox Code Playgroud)

qt parent-child qobject

5
推荐指数
1
解决办法
5221
查看次数

标签 统计

qt ×2

c++ ×1

parent-child ×1

qobject ×1

qprogressbar ×1