如何在qdialog中使用螺纹填充Qcombobox中的数据
How to use Threading in QDialog to fill data in QComboBox?
我在qdialog中有10个Qcombobox。在打开对话框时,我将数据填充到这些组合中,将需要7秒即可加载对话框,如何解决此问题,因为ComboBox中没有单击的插槽。我认为我们可以使用线程解决此问题,但我不知道Qthread。
解决方案并不容易,因为QT不允许在主线程外修改小部件。
简单解决方案:使用线程将数据放入QStringLists并使用AddItems设置。Qthreadpool更容易用于此用户酶。如果问题是数据本身的大小,而不是处理。
,该解决方案将无济于事。复杂的解决方案(适合学习):然而
您还可以创建自己的QlistView衍生的类,该类在Load Data上首次呼叫数据时,请使用true -offrite setVisible(bool)。使用setView()。
将此类的实例设置为每个组合框关于如何使用Qthread,请参见示例,阅读教程...在这里解释很复杂,但是网上有示例和教程。
以后的编辑:
也可以使用事件过滤器:
// Install event filter
MyDlg::MyDlg()
{
qApp->installEventFilter ( this );
}
// search for the view of the combo to be activated
// and fill it.
bool MyDlg::eventFilter ( QObject * obj, QEvent * event )
{
QSet<QAbstractItemView *> myComboViews;
my_combos.insert(combo1->view());
if ( event->type () == QEvent::Show )
{
QAbstractItemView * view = qobject_cast<QAbstractItemView*>(obj);
if ( myComboViews.contains(obj) && view->isVisible() )
{
fillComboView(view);
}
}
return QDialog::eventFilter ( obj, event );
}
未经测试的代码,但是您可以获取IDEEA。
相关文章:
- 在c++中用vector填充一个简单的动态数组
- 如何使用用户输入在C++中正确填充2D数组
- 如何找到大小'x'数组是否完全填充,在C++?
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- 通过for循环使用用户输入填充列表
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 如何正确填充在堆上分配的二维数组?
- 将数字转换为填充字符串
- 有没有办法在一行中填充矢量图
- 用C++中的数字和条件填充向量
- 用真值填充矢量
- 使用结构成员指针在C++中填充结构
- 流填充字符的默认定位
- 使用不同算法的 PKCS1v15 填充进行加密 ++ 签名
- C++:使用缓冲区中的数据填充结构
- 如何将零填充的多维数组传递给 C++ 中的函数?
- Cryptopp:获取密码输入的填充字符串
- 如何在qdialog中使用螺纹填充Qcombobox中的数据
- 鼠标按下QComboBox的插槽-如果用户单击组合框,则动态填充项目
- Qt: c++:如何使用QStringList填充QComboBox