- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含表 X 的数据库:我们称它为 clients
。我还有一个与编辑表 X 内容相关的表格。当需要从表 X 中“挑选”记录时,它可能会自行打开(以浏览/编辑)以及其他形式。
我如何告诉父级,一个特定的 QModelIndex
已直接从 on_tableView_doubleClicked(const QModelIndex &index)
信号处理程序中挑选出来?
目前,我只有一个“父亲”形式,所以我知道将哪种类型的指针放入子形式(因此它可以保存指向父的指针)并且只是转换它类型的指针。
if (parent) daddy = qobject_cast<InvoiceEd*>(parent);
现在我想添加一个来自另一种形式的调用,我意识到我必须从 QWidget*
指针中转换出不同的指针,而且我不知道如何确定什么是“伪装的”在 QWidget* parent
指针下。我该怎么做?
最佳答案
我建议使用接口(interface)和dynamic_cast
来传递有关所选项目的信息:
InvoiceEdInterface.hpp
:
class InvoiceEdInterface {
public:
virtual void SetSelectedItem (SelectedItemClass i_selected_item) = 0;
};
InvoiceEd.hpp
:
class InvoiceEd: public InvoiceEdInterface {
public:
void SetSelectedItem (SelectedItemClass i_selected_item) override {
// Process setting selected item.
}
};
DataForm.hpp
class DataForm {
...
void on_tableView_doubleClicked(const QModelIndex &index) {
auto invoice_ed {dynamic_cast< InvoiceEdInterface* >(parent ())};
if (invoice_ed) {
invoice_ed->SetSelectedItem (...);
}
}
...
};
解决方案背后的想法非常简单:如果父窗口小部件实现了指定的接口(interface),则调用 SetSelectedItem()
。否则,什么也不会发生。
但是请注意,建议的解决方案可能不是Qt-ish。使用 Qt,您可以添加一个信号来通知所选项目。当 DataForm
对象在父窗口小部件中创建以选择某个项目时,父窗口小部件应建立信号槽连接。此解决方案比上面提出的解决方案更灵活,因为它允许程序中的任何对象获取有关所选项目的信息。
所提出的两种解决方案都是动态工作的,不受基于模板的解决方案的限制。
关于c++ - 在 Qt 中确定父窗体的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47744532/
对于一个科学实验,我写了一个turtle.py ,它会打开一个 800x480 的窗口并绘制一个缓慢增长的黑点。 turtle.py以 C:\Users\kaza>python C:\Users\ka
我开发了一个 swing 应用程序,但每次运行应用程序时都会打开一个新窗口。我希望如果一个窗口已经打开,则其他窗口不允许打开。 最佳答案 Here是一个 Java 单一应用实例的例子: A singl
有没有办法检测主进程中 Electron 的结构? process.platform 似乎也在 x64 机器上返回 win32,我没有在文档中找到任何获取架构的选项。 最佳答案 你试过 process
public short[] HanningWindow(short[] signal_in ,int pos ,int size) { for (int i= pos; i < pos+si
我有一个具有这些属性的 Electron 窗口: mainWindow = new BrowserWindow({ width: 800, height: 600, title: "Aqu
我有一个 Ubuntu 工作站,我正在尝试引导一个 Windows 节点。 Windows 节点在端口 2222 上打开了 ssh。我一直在关注 http://docs.opscode.com/plu
我是一名优秀的程序员,十分优秀!