QT 函数调用二维数组
时间: 2024-01-12 21:22:11 浏览: 114
在QT中调用二维数组可以使用QVector容器。下面是一个示例代码:
```cpp
#include <QVector>
#include <QDebug>
int main() {
QVector<QVector<int>> array;
// 初始化二维数组
QVector<int> row1 = {1, 2, 3};
QVector<int> row2 = {4, 5, 6};
QVector<int> row3 = {7, 8, 9};
array.append(row1);
array.append(row2);
array.append(row3);
// 访问二维数组元素
qDebug() << array[0][0]; // 输出:1
qDebug() << array[1][2]; // 输出:6
return 0;
}
```
这段代码首先定义了一个二维数组`array`,然后使用`QVector`容器来存储每一行的数据。通过`append`函数将每一行添加到`array`中。最后,可以使用`[]`操作符来访问二维数组的元素。
相关问题
qt函数调用二维数组怎么写
在Qt中,可以通过使用指针来传递二维数组。下面是一个示例代码,演示了如何在Qt中调用函数并传递二维数组:
```cpp
// 定义一个函数,接收二维数组
void test(int *a, int x_len, int y_len){
int (*a_tmp)[x_len] = (int (*)[x_len])a;
for(int y = 0; y < y_len; y++){
for(int x = 0; x < x_len; x++){
qDebug() << a_tmp[x][y];
}
qDebug() << endl;
}
}
// 在其他地方调用函数并传递二维数组
int main(){
int arr[3][4] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}};
int *ptr = &arr[0][0];
test(ptr, 4, 3);
return 0;
}
```
这段代码中,我们首先定义了一个函数`test`,它接收一个指向整型的指针`a`,以及二维数组的行数`x_len`和列数`y_len`。在函数内部,我们将指针`a`转换为指向二维数组的指针`a_tmp`,然后使用两个嵌套的循环遍历二维数组并打印每个元素。
在`main`函数中,我们定义了一个二维数组`arr`,然后将指向数组第一个元素的指针`ptr`传递给`test`函数,并指定行数和列数。
这样,我们就可以在Qt中调用函数并传递二维数组了。
一个100*100的二维数组,数组中有0-100的随机数字,找到该二维数组中所有的峰值,峰值的定义为大于其周围的数字,用VS+QT实现
以下是用C++语言、VS和QT实现寻找二维数组中所有峰值的示例代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
QT_CHARTS_USE_NAMESPACE
using namespace std;
// 定义峰值点的结构体
struct PeakPoint {
int row; // 峰值点所在的行
int col; // 峰值点所在的列
int val; // 峰值点的值
};
vector<PeakPoint> findPeakPoints(int** arr, int rows, int cols) {
vector<PeakPoint> peakPoints;
for (int i = 1; i < rows - 1; i++) {
for (int j = 1; j < cols - 1; j++) {
int val = arr[i][j];
if (val > arr[i - 1][j] && val > arr[i + 1][j] && val > arr[i][j - 1] && val > arr[i][j + 1]) {
// 找到一个峰值点
PeakPoint peakPoint = { i, j, val };
peakPoints.push_back(peakPoint);
}
}
}
return peakPoints;
}
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
// 初始化二维数组
int rows = 100;
int cols = 100;
int** arr = new int*[rows];
for (int i = 0; i < rows; i++) {
arr[i] = new int[cols];
for (int j = 0; j < cols; j++) {
arr[i][j] = rand() % 101; // 生成0-100的随机数
}
}
// 找到所有峰值点
vector<PeakPoint> peakPoints = findPeakPoints(arr, rows, cols);
// 输出峰值点的信息
for (auto peakPoint : peakPoints) {
cout << "Peak point: row = " << peakPoint.row << ", col = " << peakPoint.col << ", val = " << peakPoint.val << endl;
}
// 可视化显示二维数组和峰值点
QMainWindow window;
QLineSeries* series = new QLineSeries();
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
series->append(j, arr[i][j]);
}
}
QChart* chart = new QChart();
chart->legend()->hide();
chart->addSeries(series);
chart->createDefaultAxes();
for (auto peakPoint : peakPoints) {
QLineSeries* peakSeries = new QLineSeries();
peakSeries->append(peakPoint.col, peakPoint.val);
chart->addSeries(peakSeries);
}
QChartView* chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
window.setCentralWidget(chartView);
window.resize(800, 600);
window.show();
return a.exec();
}
```
该程序首先初始化一个100*100的二维数组,并生成0-100的随机数填充到数组中。然后调用`findPeakPoints`函数寻找所有的峰值点,并输出它们的信息。最后使用QT库可视化显示二维数组和峰值点。
可以通过Visual Studio将该程序编译为可执行文件,也可以使用QT Creator将该程序编译为可执行文件。需要注意的是,QT库需要额外安装,并在项目配置中添加相应的库和头文件路径。
阅读全文
相关推荐














