Russian Qt Forum
Ноябрь 01, 2024, 14:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: События мыши в linux  (Прочитано 1824 раз)
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. Помогите.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.152 секунд. Запросов: 21.