程序在没有操作系统信号的情况下在函数中的特定行挂起
Program hangs at a particular line in a function without a signal from operating system
我正在用qt制作一个库管理软件。我有一个 LogWindow 类,其中显示日志(基本上是"'x'在日期'abc'发行的书'y'"(。我添加了一个QDockWidget来过滤结果,比如说,用户只想看到今天的活动,或者说用户想看看到目前为止谁都发行了书"x"。
问题是程序突然停止执行。
在我的 LogWindow 构造函数中,我调用 createDock 函数,这是一个私有函数:
void LogWindow :: createDock()
{
//initialize main layout of dock
layout = new QVBoxLayout;
//initialize dock
dock = new QDockWidget("Filters", this);
dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
dock->setWindowTitle("Filters");
dock->setFeatures(QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetMovable);
//make group boxes
filters = new QWidget(this);
createHistory();
createIssuedBy();
createBookIssued();
filters->setLayout(layout);
dock->setWidget(filters);
this->addDockWidget(Qt::RightDockWidgetArea, dock);
dock->show();
}
不知道为什么,但程序一直工作到倒数第二行,但最后一行没有执行。我通过在函数的每一行上设置断点来找到这一点。
void LogWindow::createBookIssued()
{
//book issued group box
bookIssued = new QGroupBox("Book Issued");
book = new QLineEdit;
QHBoxLayout *bookIssuedLayout = new QHBoxLayout;
bookIssuedLayout->addWidget(bookIssued);
bookIssued->setLayout(bookIssuedLayout);
layout->addWidget(bookIssued);
}
我没有收到来自操作系统的任何信号,但程序停止响应任何事件。也不会显示日志窗口。
因此,我评论了对"createBookIssued(("函数的调用,一切正常。Dock 工作,显示 LogWindow,程序按预期工作
问题出在 createBookIssued(( 的最后一行第三行,我将 bookIssue(组框(添加到布局中,然后将布局设置为同一本书发行。将倒数第三行替换为:
bookIssuedLayout->addWidget(book);
程序现在按预期工作
相关文章:
- 挂起和取消挂起一个文件DLL
- 如何防止C++遗留代码中的挂起指针
- 为什么所有C++编译器都会崩溃或挂起此代码
- 我编写了代码将十进制分数转换为其二进制等效数.它编译得很好,但在执行时挂起
- 构建挂起,即使是适度的文件大小
- 循环挂起迭代的 std::擦除 on std::list
- Poco::Net::FTPClientSession 在 open() 方法上挂起 129 秒,如果 ftp 主机不存
- 为什么析构函数挂起
- 程序在没有操作系统信号的情况下在函数中的特定行挂起
- recv (Winsock) 函数挂起,但数据可用
- 调用 Fortran 函数会使程序挂起
- boost::asio::read函数挂起
- std::thread::join 在析构函数中挂起
- 将函数从挂起的dll复制到进程内存中
- 通过析构函数删除动态成员会导致程序挂起
- 内联函数中的静态局部变量导致VS2015编译代码中的挂起
- Qt程序挂起(不响应),直到函数结束,然后再次开始工作
- 套接字编程C/ c++ - recv函数在服务器端挂起
- 程序挂起在对Wincrypt函数的函数调用中
- c#包装到c++函数-运行一次,工作正常.运行两次,程序挂起