Russian Qt Forum

Qt => Общие вопросы => Тема начата: aleksey.snake от Февраль 01, 2011, 14:32



Название: События мыши в linux
Отправлено: aleksey.snake от Февраль 01, 2011, 14:32
Здравствуйте!
Делаю drop из приложения в ОС linux. Для Windows он работает так:
Код:
#include <windows.h>

class WinMimeData : public QMimeData
{
public:
WinMimeData()
: runOnce(true)
{
setUrls(QList<QUrl>()<<QUrl("tmp"));
}

QVariant retrieveData(const QString& mimeType, QVariant::Type type)const
{
// This is surely a hack, but how else do we find out that the drag operation has completed?
if(((unsigned short)GetAsyncKeyState(VK_LBUTTON))>1)
return QMimeData::retrieveData(mimeType, type);

if(runOnce)
{
// Now we create the file:
if(file.open())
{
file.write("Hello!");
file.flush();
}
runOnce=false;
}
return QUrl("/"+file.fileName());
}
private:
// these need to be mutable since retrieveData() is const
mutable QTemporaryFile file;
mutable bool runOnce;
};

class Widget : public QWidget
{
void mousePressEvent(QMouseEvent* event)
{
QDrag *drag = new QDrag(this);
drag->setMimeData(new WinMimeData);
drag->start(Qt::CopyAction);
}
};

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Widget window;
window.show();
return app.exec();
}
Не могу найти аналог GetAsyncKeyState для linux. Помогите.