【发布时间】:2015-05-25 12:56:04
【问题描述】:
所以我在文件AnalysisDisplays.cpp中有这段代码
void AnalysisDisplays::showAnalysisDisplays(QWidget *parent) {
QMainWindow *mw = new QMainWindow(parent);
mw->setWindowTitle("Equity Strategy Analysis");
mw->setMinimumSize(750, 700);
QTabWidget *tabw = new QTabWidget(mw);
mw->setCentralWidget(tabw);
for (QListWidgetItem *wi: listItems) {
if (wi->checkState()) {
std::string eqType = wi->text().toStdString();
DisplayAnalysis *dw = new DisplayAnalysis();
displays[currentDisplayId] = dw;
//Add this tab to tab widget
tabw->addTab(dw, eqType.c_str());
dw->setDisplayId(currentDisplayId);
currentDisplayId++;
//dw->displayAnalysis(parseCSV->getDataForEquityType(eqType));
}
}
//Show the main window
mw->show();
}
问题是我们可能会创建许多超级慢的选项卡。注释掉的行是我想在运行时运行的。问题是我目前正在制作 QMainWindow 和 QTabWidget 而忘记了它。我需要以某种方式将一个事件挂钩到 QTabWidget,因此每当单击选项卡对象 (DisplayAnalysis) dw 时,它将调用 dw->displayAnalysis(parseCSV->getDataForEquityType(eqType)); 其中 eqType 是选项卡的标题。这将导致选项卡内容被填充。
可以打开多个调用showAnalysisDisplays 的窗口,它们可能包含不同数量的选项卡。所以每个窗口都有自己的QMainWindow 和QTabWidget 但parseCSV 指针保持不变。
那么我怎样才能像这样将事件挂接到每个选项卡,考虑到可能有多个打开的窗口需要在运行时在单击选项卡时加载内容?
【问题讨论】:
-
慢的部分是哪一部分?
parseCSV->getDataForEquityType(eqType)还是dw->displayAnalysis(..)?您真的需要在每次单击选项卡时调用它,还是只在第一次单击时调用它?
标签: c++ qt qtabwidget