我正在开发一个简单的Qt Widget应用程序,其中有2个不同的QMainWindow类可以显示给用户(目前仅实现了一个)。
我的想法是显示一个带有自定义按钮的消息框,询问用户要执行哪种程序模式。
我想到了下面的代码,但是我遇到了奇怪的问题。如果您创建了一个简单的qt小部件项目,则可以轻松尝试此代码。
问题是,正在显示消息框,并且正确显示了按钮。当用户选择“调试模式”时,正确的MainWindow将显示一秒钟,然后消失!但是该程序保持打开状态,并且无法获得退货!
对于“操作模式”,显示了关键消息框,但是当用户单击“确定”时,所有消息框都消失了,但再次没有达到返回代码!
“退出”选项也是如此...
#include "mainwindow.h"
#include <QApplication>
#include <QMessageBox>
#include <QAbstractButton>
#include <QPushButton>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// At the start of the progam ask user which mode to show
QMessageBox msgBoxModeSelection;
msgBoxModeSelection.setIcon(QMessageBox::Question);
msgBoxModeSelection.setText("Please select the program mode:");
QAbstractButton* btnModeDebug = msgBoxModeSelection.addButton(
"Debug Mode", QMessageBox::YesRole);
QAbstractButton* btnModeOperation = msgBoxModeSelection.addButton(
"Operation Mode", QMessageBox::NoRole);
QAbstractButton* btnModeExit = msgBoxModeSelection.addButton(
"Exit", QMessageBox::RejectRole);
msgBoxModeSelection.exec();
// Check which mode is being selected by user and continue accordingly
if(msgBoxModeSelection.clickedButton() == btnModeDebug) {
MainWindow w;
w.show();
} else if(msgBoxModeSelection.clickedButton() == btnModeOperation){ // Operation Mode
//TODO implement...for now just inform user that it is not implemented
QMessageBox::critical(nullptr, "Error", "Operation Mode is not yet implemented");
return a.exec();
} else if(msgBoxModeSelection.clickedButton() == btnModeExit){ // Just exit
// Just exit the program
QMessageBox::critical(nullptr, "Goodbye!", "Sorry to see you go :(");
return a.exec();
}
return a.exec();
}
因此,该程序基本上消失了,但是它仍然处于打开状态并正在处理...终止该程序的唯一方法是停止调试器或从操作系统中终止其进程。
所以我希望显示正确的表单,因为其中没有消息框,并且返回代码和程序退出再次正常!
答案 0 :(得分:2)
您的MainWindow仅存在于if语句内。因此,一旦显示并离开范围,它就会被破坏。
将其更改为例如:
ITEM CATEGORY LOCATION 1/1/2019 1/2/2019 1/3/2019
21221 SHOES HYD 46 0 0
21222 TSHIRT HYD 28 54 0
21223 CAPS HYD 5 2 36
或
import numpy as np
import pandas as pd
mydata = pd.read_csv("C:/Users/data.csv", delimiter=',' , header='infer',
names=None, index_col=None, usecols=None, squeeze=False,
engine='python')
mydata.head()
pivot1 = pd.pivot_table(mydata, index=["ITEM NO", "CATEGORY", "LOCATION"])
mydata.groupby(['pivot1','DATE'], as_index = False).sum().pivot('pivot1','DATE').fillna(0)