qt C++命令行代码中的分段错误(核心转储)
Segmentation fault (core dumped) in qt C++ command line code
我在运行Qt-C++程序时遇到分段错误:
dlg.h
:
#include<QGridLayout>
#include<QPushButton>
#include<QDialog>
class dlg : public QDialog{
private:
QPushButton *btn1,*btn2,*btn3,*btn4,*btn5,*btn6,*btn7,*btn8,*btn9,*btn10,*btn11,*btn12;
QGridLayout *gridlayout;
public:
dlg();
};
dlg.cpp
:
#include "dlg.h"
dlg::dlg(){
btn1 = new QPushButton("btn1");
btn1 = new QPushButton("btn2");
btn1 = new QPushButton("btn3");
btn1 = new QPushButton("btn4");
btn1 = new QPushButton("btn5");
btn1 = new QPushButton("btn6");
btn1 = new QPushButton("btn7");
btn1 = new QPushButton("btn8");
btn1 = new QPushButton("btn9");
btn1 = new QPushButton("btn10");
btn1 = new QPushButton("btn11");
btn1 = new QPushButton("btn12");
gridlayout = new QGridLayout(this);
gridlayout->addWidget(btn1,0,0);
gridlayout->addWidget(btn2,0,1);
gridlayout->addWidget(btn3,0,2);
gridlayout->addWidget(btn4,0,3);
gridlayout->addWidget(btn5,1,0);
gridlayout->addWidget(btn6,1,1);
gridlayout->addWidget(btn7,1,2);
gridlayout->addWidget(btn8,1,3);
gridlayout->addWidget(btn9,2,0);
gridlayout->addWidget(btn10,2,1);
gridlayout->addWidget(btn11,2,2);
gridlayout->addWidget(btn12,2,3);
setLayout(gridlayout);
setWindowTitle("* QGridLayout *");
}
main.cpp
:
#include<iostream>
#include<QApplication>
#include "dlg.h"
using namespace std;
int main(int argc,char** argv){
QApplication app(argc,argv);
dlg obj;
obj.show();
return app.exec();
}
我将所有文件保存在名为gridlayout
的目录中,并在终端中运行了这些 comamnds:
cd /hom/gridlayout/
qmake -project
qmake gridlayout.pro
make
我收到此错误:
分段故障(核心转储(
有没有人可以解决这个问题。我指的是Jeganathan Swaminathan的《掌握C++编程》这本书,用于Qt命令行C++编码。
这段代码有什么问题?
你反复写btn1
.你可能的意思是btn1
,btn2
,...考虑使用std::list
(因为 GUI 元素可能无法复制(和循环,而不是一遍又一遍地复制粘贴同一行:
class dlg : public QDialog{
private:
std::list<QPushButton> buttons;
QGridLayout gridlayout;
public:
dlg();
};
dlg::dlg() : gridlayout (this) {
for (std::uint_fast8_t x = 0; x < 3; ++x) {
for (std::uint_fast8_t y = 0; y < 4; ++y) {
gridlayout.addWidget (buttons.emplace_back ("btn" + std::to_string(x*4+y)), x, y);
}
}
setLayout(gridlayout);
setWindowTitle("* QGridLayout *");
}
此示例还避免了手动内存管理。
相关文章:
- C++映射分割错误(核心转储)
- 在c++中初始化矩阵时出现分段错误(核心转储)
- 在c++中键入向量中的所有值后,得到分段错误(核心转储)
- 分段错误(核心转储)但无法弄清楚
- 分段错误(核心转储) - 使用 SavedModel 的 Tensorflow C++ API 进行推断
- C++指针无法在函数外部传递值和分段错误(核心转储)错误
- 合并排序:分段错误核心转储
- C++:分段错误(核心转储)
- 从 pybind11 构建导入模块时出现"分段错误(核心转储)"
- qt C++命令行代码中的分段错误(核心转储)
- C++ atof - 分段错误(核心转储)
- 为什么我的代码包含错误分段错误(核心转储)?
- 运行编译的 a.out 后出现分段错误(核心转储)错误
- 运行我的代码时出现分段错误(核心转储)问题
- C++代码的分段错误(核心转储)
- 为什么我在执行main之前就出现分段错误(核心转储)
- OpenCV 分段错误(核心转储)在使用 cv::Mat::at 时
- 分段错误(核心转储) 重定向输入
- C++字符串中的分段错误(核心转储)
- 树实现给出分段错误(核心转储)错误 c++ 11