首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >程序在没有来自操作系统的信号的情况下挂起在函数中的特定行

程序在没有来自操作系统的信号的情况下挂起在函数中的特定行
EN

Stack Overflow用户
提问于 2018-05-31 18:33:43
回答 1查看 20关注 0票数 0

我正在用qt做一个图书馆管理软件。我有一个LogWindow类,它显示日志(基本上是“'x‘issued book 'y’on date 'abc‘")。我添加了一个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);
}

我没有收到来自操作系统的任何信号,但是程序停止响应任何事件。也未显示LogWindow。

因此,我注释了对'createBookIssued()‘函数的调用,一切工作正常。Dock工作,LogWindow显示,程序按预期工作

EN

回答 1

Stack Overflow用户

发布于 2018-05-31 18:51:52

问题出在createBookIssued()的倒数第三行,我将bookIssued (组框)添加到布局中,然后将布局设置为相同的bookIssued。倒数第三行替换为:

bookIssuedLayout->addWidget(book);

程序现在可以正常工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50622259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档