Qt4 QListWidget在默认情况下返回NULL
每次打开小部件时,我都会添加所有widgetItems,并将默认值设置为零。首次启动应用程序时,widgetItem返回有效地址,但关闭小部件并再次打开时,widgetItem地址返回为零Qt4 QListWidget在默认情况下返回NULL,qt4,qt5,Qt4,Qt5,每次打开小部件时,我都会添加所有widgetItems,并将默认值设置为零。首次启动应用程序时,widgetItem返回有效地址,但关闭小部件并再次打开时,widgetItem地址返回为零 void csGuiSSHModuleSavedConnWindow::showSavedConnWindow(QMap<QString, StoreInfo> &savedConnInfo,const QPoint &pos) { m_savedConnMap.clear
void csGuiSSHModuleSavedConnWindow::showSavedConnWindow(QMap<QString, StoreInfo> &savedConnInfo,const QPoint &pos)
{
m_savedConnMap.clear();
m_savedConnMap = savedConnInfo;
if(m_savedConnMap.keys().count() == 0)
return;
m_pConnList->clear();
foreach (QString connName, m_savedConnMap.keys()) {
QListWidgetItem* lwi = new QListWidgetItem(connName);
m_pConnList->addItem(lwi);
lwi->setTextAlignment(Qt::AlignLeft);
}
if(m_pConnList->count() == 0)
{
return;
}
m_pConnList->item(0)->setSelected(true);
executeDialog(pos);
}
void csGuiSSHModuleSavedConnWindow::slotAddConnection()
{
QListWidgetItem *listItem = m_pConnList->currentItem();
QList<QListWidgetItem *> itemsSelected = m_pConnList->selectedItems();
int count = itemsSelected.count();
int cc = m_pConnList->count();
if(listItem)
{
//Returns NULL on second time opening the widget
}
}
关于Qt中的各种视图小部件,需要知道的是,所选项目和当前项目不一定是相同的 如果设置了当前项,则它将成为选定项,但如果您以其他方式设置,则不会成为选定项。可以有多个选定项目,但只有一个当前项目 现在我不知道你为什么第二次得到空值。我需要完整的代码,但我可以告诉你:
m_pConnList->item(0)->setSelected(true);
应该是:
m_pConnList->setCurrentItem( m_pConnList->item(0) );
或:
例如,这里是一个小部件的屏幕截图,选中的项目高亮显示,当前项目有一个焦点边框:
我希望这有帮助。如果没有,请发布更多代码或github链接等
m_pConnList->setCurrentIndex(0);