一直尝试这样做了很长一段时间,并从我能找到的每个论坛帖子中获取建议,但我仍然无法解决它.这是我目前的代码,我真的想改变进度条上的块的颜色.除颜色外,其他所有设置都有效.
在我的工作区对象中填充MainWindow上的一个子视图.
Workspace::Workspace( QWidget* parent) : QWidget( parent )
{
QTableView* tableView = new QTableView();
// ...
tableView->setItemDelegate(new ProgressBarDelegate);
}
Run Code Online (Sandbox Code Playgroud)
delegate.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 = …Run Code Online (Sandbox Code Playgroud) 我有一个QTreeWidget并且启用了拖放功能。尽管我希望用户能够在树内拖放项目,但我不希望他们将任何拖动的项目放在顶层。我怎样才能做到这一点 ?
假设我已经预定义了顶级项目的类别,并且我不想扩展该列表。但在较低级别中,用户可以创建任意数量的项目,并且她/他也可以移动这些项目。
我有一个QComboBox包含长字符串的字符串.长意味着琴弦比QComboBox我的宽度宽GUI.在这种情况下,Qt将以这种方式显示项目:

之前我正在使用的MatLab用户不太友好,GUI但对于下拉列表,我认为MatLab解决方案更好:

有没有简单的方法来实现类似的结果,Qt或者我是否必须为此目的设置自定义模型和视图?
如何设置 Qtreewidget 中项目的图标大小?到目前为止我已经尝试过
QTreeWidget.setIconSize(QSize(32,32))
但所做的只是增加宽度,而不是高度。
然而,一个
print QTreeWidget.iconSize()
显示正确的结果:
PyQt4.QtCore.QSize(32, 32)
有没有人对 QTreewidget 的工作原理有更好的了解?
我正在创建一个用于ax和y笛卡尔坐标系的pair1类.x和y是双打.我需要有3个构造函数.
pair1::pair1(double)并且pair1::pair1(double)不能超载.我的课:
class pair1
{
private:
double x;
double y;
public:
pair1(){ x = 0.0, y = 0.0; }
pair1( double a ){ x = a; y =0.0; }
pair1(double b){ x = 0.0; y = b; }
};
Run Code Online (Sandbox Code Playgroud) 我正在尝试制作游戏,我为玩家创建了一个类.该类继承了"Entity",它继承了QGraphicsItem.
#ifndef PLAYER_H
#define PLAYER_H
#include "entity.h"
class Player : public Entity
{
public:
Player( QString, int, int, int position );
QRectF boundingRect() const;
void paint( QPainter *painter,
const QStyleOptionGraphicsItem *option,
QWidget *widget );
void move_north();
void move_south();
void move_west();
void move_east();
void start_moving();
void stop_moving();
void switch_step();
bool its_moving();
void change_pos(int);
private:
QPoint position;
bool is_moving;
private signals:
void Move();
};
#endif // PLAYER_H
Run Code Online (Sandbox Code Playgroud)
但我仍然在第33行收到错误的"预期":'在'受保护'之前'.
我需要在 Qt 中快速绘制小部件,但我不想使用任何准备好的东西。我有一些浮动数据,例如QVector< float >数据,我需要在小部件上绘制它。但我不希望使用paintEvent和QPainter直接就可以了。有没有机会将此数据转换为位图(像素图?)并直接加载它以显示在小部件上?如何从浮点数创建位图?
我正在尝试将文件从客户端发送到服务器。但它只发送文件的一部分。当文件大小超过 2Mb 时,似乎会发生这种情况。可能是什么问题?对不起,如果这是一个愚蠢的问题,但我无法在谷歌中找到答案。
这是客户端 cpp:
#include "widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent)
{
progressBar = new QProgressBar(this);
tcpSocket = new QTcpSocket(this);
fileLabel = new QLabel(this);
progressLabel = new QLabel(this);
fileBtn = new QPushButton(this);
fileBtn->setText("Open");
sendBtn = new QPushButton(this);
sendBtn->setText("Send");
layout = new QGridLayout;
layout->addWidget(fileBtn, 0, 0);
layout->addWidget(sendBtn, 0, 1);
layout->addWidget(fileLabel, 1, 0);
layout->addWidget(progressBar, 2, 0);
connect(fileBtn, &QPushButton::clicked, this, &Widget::fileOpened);
connect(sendBtn, &QPushButton::clicked, this, &Widget::onSend);
setLayout(layout);
}
Widget::~Widget()
{
}
void Widget::fileOpened()
{
fileName = QFileDialog::getOpenFileName(this, tr("Open file"));
QFileInfo fileInfo(fileName);
fileLabel->setText(fileInfo.fileName() + " …Run Code Online (Sandbox Code Playgroud) 考虑以下代码:
class A
{
public:
void aFoo() {}
};
class B
{
public:
void bFoo() {}
};
class C
{
public:
void c1Foo() {}
void c2Foo() {}
};
Run Code Online (Sandbox Code Playgroud)
无论代码架构如何,是否可以创建指向成员函数的指针向量,即使这些函数属于多个类?
在这种情况下,继承不是解决方案,因为我们不知道我们想在一个类中使用多少函数(C类有两个函数).但我们知道它们都有相同的原型.
我试图只改变QCheckBox指示矩形的颜色.
目前我成功绘制了矩形的右边和底线.可能我在这里做错了.
这是我的代码:
CheckBoxWidget.cpp
CheckBoxWidget::CheckBoxWidget(QObject *poParent)
: QItemDelegate(poParent)
{
}
void CheckBoxWidget::drawCheck( QPainter *painter,
const QStyleOptionViewItem &option,
const QRect & rect,
Qt::CheckState state) const
{
QRect oCheckBoxRect =
QApplication::style()->subElementRect( QStyle::SE_CheckBoxIndicator, &option);
painter->setPen(Qt::white);
painter->drawRect(oCheckBoxRect);
QItemDelegate::drawCheck(painter, option, oCheckBoxRect, state);
}
Run Code Online (Sandbox Code Playgroud)
CheckBoxWidget.h
class CheckBoxWidget : public QItemDelegate
{
Q_OBJECT
public:
CheckBoxWidget(QObject *poParent = 0);
virtual ~CheckBoxWidget();
protected:
virtual void drawCheck( QPainter *painter,
const QStyleOptionViewItem &option,
const QRect &,
Qt::CheckState state) const;
};
Run Code Online (Sandbox Code Playgroud)
有什么建议 ?