c++ GUI如何在第二个窗口中使用一个窗口中的私有数据
C++ GUI how to use private data from one window in the second one
我在Qt有问题。我必须做两个窗口:在第一个你可以点击10个按钮,每个按钮必须在第二个窗口的comboBox中添加一个项目(按钮的名称)。但是我不能引用这个comboBox。我没有任何主意了:(
我试图使变量保护和公共,但它不工作。我已经包括window2.h
到window1
,我正试图做这样的事情:
//this is in window1
void window1::on_button1_clicked() {
window2::combo->addItem("button1");
}
您可以将按钮的点击信号连接到第二个窗口的插槽。此槽将向组合框中添加信息。
要做到这一点,您需要将信号彼此区分开来。最好的方法是使用QSignalMapper
。
class window1 {
Q_OBJECT
... // your other definitions...
QSignalMapper* signalMapper;
};
window1::window1 (/*your constructor's parameters*/) {
signalMapper = new QSignalMapper(this); // Will map each buttons' signals to a signal with a QString parameter.
// You can do an iteration instead of this if your buttons are on a container.
signalMapper->setMapping(button1, QString("button1"));
signalMapper->setMapping(button2, QString("button2"));
// ...
signalMapper->setMapping(button10, QString("button10"));
// Same comment as above applies here.
connect(button1, SIGNAL(clicked()),
signalMapper, SLOT(map());
connect(button2, SIGNAL(clicked()),
signalMapper, SLOT(map());
// ...
connect(button10, SIGNAL(clicked()),
signalMapper, SLOT(map());
connect(signalMapper, SIGNAL(mapped(QString)),
window2, SLOT(updateCombo(QString)));
}
class window2 {
Q_OBJECT
... // your other definitions...
public slots:
void updateCombo(QString);
};
void window2::updateCombo(QString str) {
combo->addItem(str);
}
对于QSignalMapper方法,您可以在window1 (setName("buttonXYZ")
)中命名按钮对象,将单击的信号连接到window2中的插槽,并询问发送者(sender()->name()
)的对象名称。
在接收槽你可以这样做:
m_combo->addItem(sender()->name());
or
if(sender()->name() == "Button1") {
m_combo->addItem("Foo");
}
相关文章:
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- GLEW/GLUT:调用init并创建一个窗口后,取消初始化并重新初始化?
- 如何将一个窗口保留在另一个应用程序窗口的前面
- Qt:从另一个窗口访问公共对象
- 触发另一个窗口的菜单按钮
- 如何在Qt中管理另一个窗口?
- 我在窗口中有一个fltk Fl_Choice下拉菜单,但只能通过鼠标使用
- 在SFML(C++)中启动一个新窗口
- 将变量从主窗口传递到另一个qt c++窗体
- 如何仅在一个窗口中忽略注入的输入?
- Gtkmm - 关闭窗口然后显示另一个窗口的正确方法
- 尝试使用 CPP 在一个 Qt 窗口中显示多个 png 文件
- 在C++中,系统如何将这些对象中的每一个与执行程序的窗口相关联?
- 有没有办法拿一个opencv显示窗口并将其保存到GUI窗口?
- 当电子的窗口隐藏时如何激活另一个应用程序窗口
- 发送到另一个窗口的鼠标移动消息不执行任何操作
- 两个窗口-一个由线程随机输出修改
- 在创建窗口(..)之后,如何给窗口一个颜色
- X11应用程序的最佳实践—每个应用程序或每个窗口一个XOpenDisplay