Updating QGridLayouts
Updating QGridLayouts
本文关键字:QGridLayouts Updating 更新时间:2023-10-16
嗨,伙计们,我正在为我的学习编写游戏,我对此有很大的问题(我的腿受伤了,我不能去上课)。
我的工作是用c ++,qt做简单的战舰游戏。
我在逻辑代码完成的地方,但 gui 是一团糟。下面是 gui .cpp 文件的代码:
#include <QtWidgets>
#include "dialog.h"
Dialog::Dialog()
{
createGraczBox();
createKomputerBox();
createOdpowiedz();
QGridLayout *mainLayout = new QGridLayout;
mainLayout->addWidget(graczBox , 0 , 0 );
mainLayout->addWidget(komputerBox , 0 , 1 );
mainLayout->addWidget(Odpowiedz , 0 , 2 );
setLayout(mainLayout);
setFixedSize(800,400);
setWindowTitle(tr("Battleships!"));
}
void Dialog::createGraczBox()
{
graczBox = new QGroupBox(tr("Gracz"));
QGridLayout *layout = new QGridLayout;
for (int j = 0; j < NumGridRows; ++j) {
labels[j] = new QLabel(tr("%0").arg(j+1));
layout->addWidget(labels[j], 0 , j + 1 , Qt::AlignLeft);
}
for (int i = 0; i < NumGridRows; ++i) {
labels[i] = new QLabel(tr("%0").arg(i + 1));
layout->addWidget(labels[i], i + 1, 0);
}
for(int g = 1;g<10;++g)
{
layout->setColumnStretch(g,1);
}
graczBox->setLayout(layout);
}
void Dialog::createKomputerBox()
{
komputerBox = new QGroupBox(tr("Komputer"));
QGridLayout *layout = new QGridLayout;
for (int j = 0; j < NumGridRows; ++j) {
labels[j] = new QLabel(tr("%0").arg(j+1));
layout->addWidget(labels[j], 0 , j + 1 );
}
for (int i = 0; i < NumGridRows; ++i) {
labels[i] = new QLabel(tr("%0").arg(i + 1));
layout->addWidget(labels[i], i + 1, 0);
}
for(int g = 1;g<10;++g)
{
layout->setColumnStretch(g,1);
}
komputerBox->setLayout(layout);
}
void Dialog::createOdpowiedz()
{
Odpowiedz = new QGroupBox(tr("Komendy"));
QFormLayout *layout = new QFormLayout;
xLabel = new QLabel;
QPushButton *zmienna_x_przycisk = new QPushButton(tr("X"));
connect(zmienna_x_przycisk, SIGNAL(clicked()), this, SLOT(setx()));
yLabel = new QLabel;
QPushButton *zmienna_y_przycisk = new QPushButton(tr("Y"));
connect(zmienna_y_przycisk, SIGNAL(clicked()), this, SLOT(sety()));
xLabel->setText(tr("Aktualne X: %1").arg(zmienna_x));
yLabel->setText(tr("Aktualne Y: %1").arg(zmienna_y));
layout->addRow(xLabel);
layout->addRow(zmienna_x_przycisk);
layout->addRow(yLabel);
layout->addRow(zmienna_y_przycisk);
Odpowiedz->setLayout(layout);
}
void Dialog::setx()
{
bool ok_x;
x = QInputDialog::getInt(this, tr("Podaj X:"),
tr(""), 1, 1, 10, 1, &ok_x);
if (ok_x)
x=zmienna_x;
}
void Dialog::sety()
{
bool ok_y;
y = QInputDialog::getInt(this, tr("Podaj Y:"),
tr(""), 1, 1, 10, 1, &ok_y);
if (ok_y)
y=zmienna_y;
}
他们应该工作的方式:
- 我通过单击它来选择 x 和 y。
- 在新窗口中选择数字。
- 它们应该出现在"Aktualne X:/Y:"中。
- 当我有 x 和 y 时,单击确定按钮(他现在不在那里)。
- 计算机检查在太空中标记它的数字 Komputer/Gracz。
- 将 x 和 y 重置为 0。
- 显示文本"您错过了。电脑错过了。
- 继续前进,直到一个人赢。
但是我不知道如何通过其他操作使我的布局自行更新。我不能在这里做工作。
您需要在此处使用信号和插槽。创建"确定"按钮并将其connect
到一个函数,该函数将用于处理您的x
和y
变量。
相关文章:
- 如何让C++'tally up'结果并制定计划?
- QGraphicsItems not showing up QGraphicsScene
- OpenGL通常"Up"方向?
- 使用外部依赖项运行 VC++ 单元测试时"Failed to set up execution context"
- 带有"up-"和"center-vec3"参数的glm::rotate()的有效替代方案?
- Cin messing up SetConsoleTitle
- 当您通过Qt小部件打开文件时,是否可以'pop-up'文件?
- "Cleaning up"嵌套的 if 语句
- ISO C++禁止在我的代码中使用可变长度数组 'up' [-Wvla]
- Speeding up makefile for SDL2
- setting up sfml
- QTableView does not show up
- CDT 在以下期间发生内部错误: "Setting up indexer"
- Setting up GLEW with QGLWidget
- c++ setting up for sqlite3
- Glib::Regex picking up TextTag-s
- Splitting up classes c++
- Qt 5.4 中的"No debugger set up"
- QSystemTrayIcon does not show up
- Arduino locks up