Effettuo le seguenti operazioni:Perché un programma Qt elabora i dati degli appunti quando si incolla dagli Appunti a un programma esterno?
1) Copia i dati negli Appunti nel mio programma Qt su Windows.
QApplication::clipboard()->setText(data);
2) Incollare i dati su un programma esterno (notepad.exe). Successivamente il mio programma inizia a elaborare i dati degli appunti. Chiede metodi specifici di Windows:
QWindowsOleDataObject::GetData(...);
... QWindowsMimeText::convertFromMime(...);
è un problema, perché quando la dimensione dei dati in clipboard è grande il mio programma non sulla memoria assegnando a questi metodi.
Non riesco a capire perché lo stack di chiamate è abbastanza strano:
qwindowsd.dll!QWindowsMimeText::convertFromMime(const tagFORMATETC & formatetc, const QMimeData * mimeData, tagSTGMEDIUM * pmedium) Line 606 C++
qwindowsd.dll!QWindowsOleDataObject::GetData(tagFORMATETC * pformatetc, tagSTGMEDIUM * pmedium) Line 144 C++
[External Code]
Qt5Cored.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 740 C++
qwindowsd.dll!QWindowsGuiEventDispatcher::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 73 C++
Qt5Cored.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 129 C++
Qt5Cored.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 204 C++
Qt5Cored.dll!QCoreApplication::exec() Line 1188 C++
Qt5Guid.dll!QGuiApplication::exec() Line 1508 C++
Qt5Widgetsd.dll!QApplication::exec() Line 2957 C++
main(int argc, char * * argv) Line 759 C++
E 'un po' di lavoro interno Qt, non so come impatto su di esso.
Grazie! Sembra logicamente buono. È la tua ipotesi o funziona come hai descritto? Potresti condividere un link ad alcuni documenti, per favore, se ce l'hai? – Deutsche
@Deutsche era un'ipotesi basata su come funzionava qualche tempo fa, guardando il codice - sembra ancora adeguato (link in risposta modificata) – Hcorg
Grande! Grazie per la risposta, spiega il problema. Se sei così esperto in questo argomento, forse sai come prendere questa situazione (male_alloc in questo codice Qt sull'elaborazione degli eventi) e continuare correttamente il lavoro del software? – Deutsche