在运行时单击QTabWidget将内容加载到选项卡中
Load content into tab at runtime on click using QTabWidget
我在文件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
指针保持不变。
那么我怎么能像这样挂钩一个事件到每个选项卡,考虑到可能有多个窗口打开,需要在运行时加载内容,当一个选项卡被点击?
使用信号/插槽将QTabWidget::currentChanged
连接到自定义插槽,然后使用QTabWidget::tabText
获得标签和标签标题,例如:
void AnalysisDisplays::currentChangedSlot(int index) {
std::string eqType = tabw->tabText(index).toStdString();
DisplayAnalysis *dw = qobject_cast<DisplayAnalysis*>(tabw->widget(index)));
dw->displayAnalysis(parseCSV->getDataForEquityType(eqType));
}
相关文章:
- std::原子加载和存储都需要吗
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 为什么加载SDF会导致Mobilizer创建闭环错误
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- 如何使用tinyxml2从XML加载父实体和子实体
- 如何在C++中使用pybind11加载一个pickle python列表
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 当我尝试加载内核模块时,如何修复C++中的这个 malloc() 错误?
- 树莓上的 Libtorch 无法加载 pt 文件,但在 ubuntu 上工作
- Python ctypes:不会按预期加载 dll
- 为什么会出现 gettnig 运行时错误:加载类型为"_Bit_type"(stl_bvector.h) 的空指针?
- 我的程序有一个保存配置文件的GUI,如何双击此配置文件以直接加载带有配置数据的GUI?
- 保存/加载大量短数组到二进制文件
- 使用 SDL2 和SDL_image C++加载图像
- 无法使用加载库卸载注入的 dll (C++)
- 是否有原子加载非原子值的函数?
- 如果应用程序从安装选项启动,则加载库失败,错误代码为 126
- 无法使用/ CLR选项从Visual c++项目加载CLR
- 在运行时单击QTabWidget将内容加载到选项卡中