私はhereとhere
から取らQmainWindow参照実装、簡単なドラッグ&ドロップ機能を持っているへのリンクを削除するとき、私がやりたいすべてのURLが低下したときに有効なURLとオープンQDialogを受け入れることです。
URLが垂れ下がってQDialogがポップアップすると、QDialogを閉じるまでブラウザがバックグラウンドで保管されます。これは間違っているブラウザは、すべての時間を無料にする必要があります。ここ は私のコードです:QtのブラウザスタックQMainWindow
void MainWindow::dragMoveEvent(QDragMoveEvent *event)
{
if (event->mimeData()->hasFormat("text/html"))
{
event->acceptProposedAction();
}
else
{
event->ignore();
}
}
void MainWindow::dragEnterEvent(QDragEnterEvent *event)
{
// accept just text/uri-list mime format
if (event->mimeData()->hasFormat("text/html"))
{
event->acceptProposedAction();
}
else
{
event->ignore();
}
}
void MainWindow::dragLeaveEvent(QDragLeaveEvent *event)
{
event->accept();
}
void MainWindow::dropEvent(QDropEvent *event)
{
QList<QUrl> urlList;
QString fName;
QStringList pathList;
QFileInfo info;
QString suffix;
if (event->mimeData()->hasFormat("text/html"))
{
urlList = event->mimeData()->urls(); // returns list of QUrls
// if just text was dropped, urlList is empty (size == 0)
if (urlList.size() > 0) // if at least one QUrl is present in list
{
QString url = urlList.at(0).toString();
event->acceptProposedAction();
openDialog(url); // THIS IS THE FUNCTION THAT I OPEN THE QDIALOG window
}
}
//event->acceptProposedAction();
}
void MainWindow::openDialog(QString& slink)
{
QHash<QString,QVariant> DataMap;
QString link = slink;
DataMap.insert("m_webpage",link);
PublishToDialog* pPublishToDialog = new PublishToDialog(this);
pPublishToDialog->Init(DataMap);
if(pPublishToDialog->exec() != QDialog::Accepted)
{
}
}
私はすべてのものが正常に動作している、QDialogへの呼び出しを削除する場合。 とブラウザがスタックしません。私は信号/スロットを再度使用して示唆されたようにtryupされました 私はQDialogを開始すると、ブラウザが立ち往生したときにドロップされました!
QDialogの実装であり、QMainWindowをブロックするモーダルダイアログとして機能したいと思います。私がリンクを引っ張ったブラウザではありません。私の場合、ブラウザはPublishToDialog(QDIalog)ウィンドウを閉じるまでスタックされています – user63898
私はあなたが提案したものを試しましたが、それでもなお良いことはありません。私は信号/スロットを使用してブラウザがスタックしている場合でも。 QDialogが問題です。私は、すべてのものがうまく動作しているコールを削除するとき。 – user63898
pastebinなどにコードを投稿できますか?信号/スロットを持つクラス全体と同様?モーダルダイアログは、QApplicationがイベントループを実行するメインスレッドをブロックするため、できません。あなたはそれをブロックし、すべてが詰まってしまいます。 –