小编Mik*_* N.的帖子

如何使用Qt Creator从主窗口中的按钮打开一个新窗口?

这似乎是一项简单的任务,但我无法弄清楚我将如何做到这一点.我在Qt Creator中设计了两个窗口,其中一个窗口是在我的主窗口中按下按钮时打开的.这是我试图用来打开它的代码:

void MainWindow::on_generateDomain_clicked()
{
    DomainGeneration dg;
    dg.show();
}
Run Code Online (Sandbox Code Playgroud)

DomainGeneration是我窗口类的名称.此标题和源代码未从为我生成的默认Qt Creator中更改.难道我做错了什么?我没有收到任何错误,按下按钮时窗口没有打开.

c++ qt

7
推荐指数
1
解决办法
7842
查看次数

如何正确使用std:vector的erase()函数?

在std:vector上使用erase()函数时,我遇到了一个奇怪的问题.我使用以下代码:

int count = 0;
for (int itr=0; itr<b.size(); ++itr) {
    if (b[count].notEmpty = false) {
        b.erase(b.begin()+count);
        --count;
    }
    ++count;
}
Run Code Online (Sandbox Code Playgroud)

但是,由于某些原因,实际上没有任何元素从b中删除.b在其他地方宣布如下:

vector<block_data> b;
Run Code Online (Sandbox Code Playgroud)

其中block_data是一个结构,并包含布尔值notEmpty.某些b的元素在代码中较早地正确分配了notEmpty = false,因此我不确定它们为什么不被删除.是语法错误还是其他错误?

c++ vector erase

3
推荐指数
1
解决办法
1072
查看次数

如何从Qt Creator GUI中的QLineEdit获取输入?

我是Qt Creator编程的新手,我很难找到合适的资源来帮助一个绝对的初学者开始.我想创建一个简单的窗口,允许用户将字符串输入到QLineEdit框中,然后从下拉框(QComboBox)中选择一个值.然后,他们单击一个按钮,该按钮从这些源获取输入,在窗口中显示输入,并将其写入文件.

我完全不知道如何从这两个来源获取输入并在按下按钮时收集它,或者如何让它在屏幕上显示.我觉得这样一个简单的练习将涵盖如何很好地使用Qt的基础知识.如果有人可以给我一些简单的示例代码,或者将我链接到ABSOLUTE初学者的任何类型的教程,这将帮助我完成这个特别的任务,这将是伟大的!

c++ qt

2
推荐指数
1
解决办法
3371
查看次数

如果在屏幕上看不到QWidget,为什么我只能在运行时向QWidget添加元素?

尝试在运行时向QWidget添加按钮时,我遇到了一个奇怪的问题.我有一个带有QTabWidget的窗口,它有2个选项卡.当我按下窗口上的按钮时,它会在第一个选项卡上生成一系列复选框.

问题是,当我打开第一个标签时,按下按钮没有任何反应,但如果我打开第二个标签,按下按钮,然后返回第一个标签,复选框显示正确.这是创建复选框的代码示例:

for(int i = 0; i < x_dim; ++i){
    for(int j = 0; j < y_dim; ++j){
        checkBoxVector.append(new QCheckBox( ui->dim1 ));
        checkBoxVector.last()->setGeometry(i * 20, j * 20, 20, 20);
    }
}
Run Code Online (Sandbox Code Playgroud)

我必须在QTabWidget中启用某种属性才能使其正常工作吗?

c++ qt

2
推荐指数
1
解决办法
467
查看次数

如何使用c ++中的指针将未知大小的多维数组传递到函数中?

就像问题所说的那样,我试图将多维数组传递给函数,将其打印到工程项目的文件中.输入数据的格式不能更改,所以请不要建议我只是将其输入为不同的数据类型.

这个特殊的函数预期一个二维数组(虽然我有其他三维后的数据),直到运行时才知道数组的大小.我知道我必须使用指针分别指向数组的每一行,但我不知道将它传递给函数的语法是什么.在下面的代码中,有问题的数组是'block'.主要功能只是我尝试使其工作的一个小测试示例:

#include<fstream>
using namespace std;

void of_write_blocks(string filename, string block_type[], int **block,
            int grid[][3], string grade_type[], int grade[][3], int n_blocks, int m[])
{
    ofstream file_out(filename.c_str(),ios::app);
    file_out<<"\nblocks\n(\n";

    for(int i=0;i<n_blocks;++i) {
            file_out<<"   "<<block_type[i]<<" ( ";
                    for(int j=0;j<m[i];++j)
                            file_out<<block[i][j]<<" ";
            file_out<<") ( ";
            file_out<<grid[i][0]<<' '<<grid[i][1]<<' '<<grid[i][2]<<" ) ";
            file_out<<grade_type[i]<<" ( ";
            file_out<<grade[i][0]<<' '<<grade[i][1]<<' '<<grade[i][2]<<" )\n";
    }
    file_out<<");\n";
}


//testing example:
int main()
{       
    int block[6][9];
    for(int i=0; i<6;++i) 
            for(int j=0; i<9;++j)
                    block[i][j] = i*j;

    int grid[6][3];
    for(int i=0; i<6;++i)
            for(int j=0; i<3;++j) …
Run Code Online (Sandbox Code Playgroud)

c++ arrays pointers function

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

如何使用指向每个元素的指针向量删除QCheckBoxes数组?

在我当前的项目中,我有一个QCheckBoxes数组,我在运行时根据用户的维度创建.每次用户单击"生成"按钮时,都会收集他们输入的尺寸,并创建一个QCheckBoxes数组.它在以下代码中完成:

void MainWindow::on_generateBoxes_clicked()
{
    int x_dim = ui->xDim->value();
    int y_dim = ui->yDim->value();
    int z_dim = ui->zDim->value();

    for(int i = 0; i < x_dim; ++i){
        for(int j = 0; j < y_dim; ++j){
            checkBoxVector.append(new QCheckBox( ui->dim1 ));
            checkBoxVector.last()->setGeometry(i * 20, j * 20, 20, 20);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

checkBoxVector是在另一个源文件中声明的全局指针数组:

QVector<QCheckBox*> checkBoxVector;
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何通过checkBoxVector删除每个QCheckBox?由于数组的先前维度是局部变量,一旦函数返回就会丢失,当重新调用它时,我怎么知道要删除多少个元素?

如果用户要按两次"生成"按钮,则会有重叠的QCheckBox,所以每次调用该函数时我都需要擦除它们.(另外,没有人想要内存泄漏!)

c++ qt

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

在迭代指针后,如何通过指针正确删除双精度数组?

我使用以下代码创建了一个双精度数组:

double *points = new double[(ii+1)*(jj+1)*(kk+1)*3];
Run Code Online (Sandbox Code Playgroud)

我意识到为了删除数组,我所要做的就是:

delete[] points;
Run Code Online (Sandbox Code Playgroud)

然而; 数组是在一个函数(称为create_points)中创建的,该函数传递第一个元素的地址,如下所示:

return &points[0];
Run Code Online (Sandbox Code Playgroud)

调用此函数的代码然后遍历地址:

double *address = create_points(x_dim,y_dim,z_dim);
for(int k=0; k<x_dim+1; ++k)
    for(int j=0; j<y_dim+1; ++j)
        for(int i=0; i<z_dim+1; ++i) {
            v[p_count].x = *address;
            ++address;
            v[p_count].y = *address;
            ++address;
            v[p_count].z = *address;
            ++address;
            ++p_count;
        }
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,如何正确删除地址用于访问的双打数组?我可以简单地去delete[] address,或者我必须以其他方式这样做吗?

c++ memory delete-operator

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

关于使用QTabWidget'addTab'功能的快速问题

希望是一个非常快速的问题.在我的一个函数中,我想在运行时为QTabWidget生成'x'个选项卡(用户提供'x').我知道我必须为QTabWidget使用addTab函数(如果我错了就纠正我),但我不确定我应该如何使用它.qt文档对我来说不清楚.

我尝试了以下命令只添加一个选项卡作为测试,但它导致程序崩溃:

ui->checkBoxTabArea->addTab(ui->checkBoxTabArea,"tab2");
Run Code Online (Sandbox Code Playgroud)

既然我明显错了,有人可以帮我使用这个功能吗?我觉得我只是将错误的参数传递给addTab.

编辑:checkBoxTabArea在程序启动时已经有1个选项卡(如果这是任何帮助).

c++ qt qtabwidget

0
推荐指数
1
解决办法
1465
查看次数

标签 统计

c++ ×8

qt ×5

arrays ×1

delete-operator ×1

erase ×1

function ×1

memory ×1

pointers ×1

qtabwidget ×1

vector ×1