트리보기와 웹보기로 구성된 Qt 응용 프로그램을 작성 중입니다. 트리 뷰의 항목을 클릭하면 해당 URL이로드됩니다. 작동합니다. Fine입니다. 항목을 마우스 오른쪽 버튼으로 클릭하면 사용자 정의 컨텍스트 메뉴가 나타납니다. 그러면 새 웹보기에서 열립니다. 이 또한 작동합니다. 하지만 내 문제는 언제 내 컨텍스트 메뉴에서 treeview 항목을 마우스 오른쪽 단추로 클릭하고 팝업 메뉴 바깥 쪽을 클릭하면 해당 항목의 URL이로드됩니다. 어떻게이 문제를 해결하기 위해 .. 나에게 친구를 도와주세요 .. 여기 Qt 사용자 정의 컨텍스트 메뉴
내 코드입니다 : 내가 알고있는 것을 들어QStandardItem *rootItem = new QStandardItem("Google");
QStandardItem *stackItem = new QStandardItem("Stack Overflow");
QStandardItem *yahooItem = new QStandardItem("Yahoo");
rootItem->appendRow(stackItem);
standardModel->appendRow(rootItem);
standardModel->appendRow(yahooItem);
***// private slot for loading the url if a treeview item is clicked:***
void MainWindow::treeViewClicked(const QModelIndex &index)
{
str = index.data().toString();
if(!(str.isEmpty()) && str=="Google")
{
url = "http://www.google.com";
}
else if (!(str.isEmpty()) && str == "stack Overflow")
{
url = "http://www.stackoverflow.com";
}
else if (!(str.isEmpty()) && str == "Yahoo")
{
url = "http://www.yahoo.com";
}
WebView *wv = dynamic_cast<WebView *>(ui->tabWidget->currentWidget());
wv->load(QUrl(url));
ui->tabWidget->setTabText(ui->tabWidget->currentIndex(),str);
treeView->setModel(standardModel);
**//Creating custom context menu for QtreeView:**
void MainWindow::showContextMenu(const QPoint& point)
{
QList<QAction *> actions;
if(treeView->indexAt(point).isValid())
{
actions.append(m_treeViewAction);
}
else if(actions.count() > 0)
{
QMenu::exec(actions, MainWindow::treeView->mapToGlobal(point));
QModelIndex index = treeView->indexAt(point);
QStandardItem *item = standardModel->itemFromIndex(index);
treeView->setCurrentIndex(index);
treeViewClicked(index);
}
}
감사합니다 Mr.Felix Galindo Allué ... –