16,816
社区成员




//class MainWindow : public QMainWindow中:
//其中:class Widge: public QWidget, class Tree : public QTreeWidget
Widge* m_pWidge = new Widge(this);
QDockWidget* m_pTree = new QDockWidget(this);
Tree *pTree = new Tree(m_pTree );
connect(m_pWidge , &Widge::SglRemove, pTree , &Tree ::SlotRemove);
void MainWindow ::keyPressEvent(QKeyEvent *pEvent)
{
qDebug() << "MainWindow keyPressEvent key : " << pEvent->key();
QMainWindow::keyPressEvent(pEvent);
}
//class Widge: public QWidget中:
bool Widge::eventFilter(QObject *pWatched, QEvent *pEvent)
{
//...
if (pKeyEvent->key() == Qt::Key_Delete) {
QWidget* focuswidget=focusWidget();
qDebug() << "PreviewWindow del key press!";
emit SglRemove();
focuswidget->setFocus();
qDebug() << "focusWidget: " << focuswidget->windowTitle();
return true;
}
//...
}
//class Tree : public QTreeWidget中
void Tree::SlotRemove()
{
QString msg;
msg = tr("Are you sure to delete selected objects?");
QMessageBox msgBox(QMessageBox::NoIcon, tr("Delete"), msg,
QMessageBox::Yes | QMessageBox::No, this);
msgBox.setDefaultButton(QMessageBox::No);
msgBox.setIconPixmap(QPixmap(":/L3DArtist/Resources/Warning_.png"));
int nBtn = msgBox.exec();
}
由于MSG并非在自身类内创建,销毁后焦点失去(应该并非直接为setFocus),改为最外围的父窗口MainWindow得到焦点,此时该如何设置才能返回至Widge中