Qt:在一个int变量,我想保持颜色信息
Qt: in an int variable i want to keep colour information
我在写俄罗斯方块。这是我对玻璃的实现。我只想画出里面的东西。Int表示一个颜色(Int glass_array[10][22];)。
现在我想知道如何使用这些颜色。为了学习,我创建了两个立方体,希望它们有不同的颜色。比如说,红色和绿色。但它们都是蓝色的。
你能帮我吗?
QtGlass.h
class QtGlass : public QFrame {
Q_OBJECT
public:
void paintEvent(QPaintEvent * event);
QtGlass(QWidget *parent);
bool key_pressed;
void keyPressEvent(QKeyEvent* event);
protected:
void glassRedraw(QPainter &painter);
int glass_array[10][22];
};
QtGlass.cpp
QtGlass::QtGlass(QWidget *parent): QFrame(parent) {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 22; j++) {
glass_array[i][j] = 0; //0 - Default color (grey);
}
}
for (int i = 8; i < 10; i++) {
for (int j = 20; j < 22; j++) {
glass_array[i][j] = QColor(Qt::green).value(); // green
}
}
for (int i = 0; i < 2; i++) {
for (int j = 20; j < 22; j++) {
glass_array[i][j] = QColor(Qt::red).value(); // red
}
}
}
void QtGlass::paintEvent(QPaintEvent *event) {
QPainter painter(this);
Figure Falcon;
glassRedraw(painter);
painter.setPen(QPen(Qt::red, 4));
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 22; j++) {
if (glass_array[i][j] > 0) {
painter.fillRect(i* 31+ 1, j * 31 + 1, 29, 29,
QBrush(QColor(glass_array[i][j]), Qt::SolidPattern));
}
}
}
}
我建议使用Qt提供给您的一些c++功能:
如果你声明QVector< QVector<QColor> > glass_array;
,你会得到更多的安全:例如,在这个声明后
QVector< QVector<QColor> > glass_array(10, QVector<QColor>(22));
glass_array[9][21] = Qt::red; // this is OK
// this causes
// ASSERT failure in QVector<T>::operator[]: "index out of range", file ../../QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore/qvector.h, line 359
glass_array[9][22] = Qt::blue;
如果你决定这样做,成员声明必须被"拆分":
QVector< QVector<QColor> > glass_array;
然后初始化构造函数:
QtGlass::QtGlass(QWidget *parent):
QFrame(parent),
glass_array(10, QVector<QColor>(22))
{...}
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 如何在内核C++中使用1920x1080x16M图形或类似的16M颜色?(VGA)
- 如何在24位SDL_Surface上设置像素的颜色
- 如何设置一个范围来提取我想要获得的信息
- 如何从SDL_Surface获取特定像素的颜色
- 系统参数信息A 与 SPI_GETMOUSE 返回 0
- 为什么 gcovr 会生成空覆盖率统计信息?
- 我已经阅读了很多关于 2d 数组的信息,但我在作业中使用它时遇到了麻烦
- 列表视图更改选择颜色
- GtkTreeView 交替行颜色
- dx11 渲染到纹理仅显示透明颜色
- 使用 OpenGL 4.5 更改所选顶点的颜色
- 为什么我的 LEGACY OPENGL 颜色反转了?
- 将信息输入到下面显示的结构向量中的正确语法/格式是什么
- 调试符号中缺少 QObject 类信息(编辑但存在其他 Qt 类)
- c++builder-显示没有标题的字节数组颜色信息
- Qt:在一个int变量,我想保持颜色信息