本文目录一览:
- 1、Qt里的QMouseEvent的函数有一个是pos,一个是globalPos,我大概理解的是后者是相对整个桌面的~~
- 2、Qt中如何修改文件中的内容
- 3、请教一下,QT 中读取文件时,有没有倒着读取的。比如我想读取文件后100*100个数据,C/c++的seek函数就可以
Qt里的QMouseEvent的函数有一个是pos,一个是globalPos,我大概理解的是后者是相对整个桌面的~~
你理解反了。后者是相对窗口的,前者才是相对整个桌面。
新建一个窗口程序,然后创建一个QMenu对象。在构造函数里初始化
menu = new QMenu("menu", this); //menu在头文件声明
QAction *action = new QAction(tr("1111"), this); //为使目录较大,能看见,我们添加一个action
menu-addAction(action);
然后在mousePressEvent里看到效果
void Dialog::mousePressEvent(QMouseEvent *e)
{
if(e-button() == Qt::RightButton) //鼠标右键。避免无法关掉窗口
{
QPoint p(0, 0);
//menu-exec(p); //测试用,坐标相对于桌面
menu-exec(e-globalPos()); //坐标相对于窗口
//menu-exec(e-pos()); //坐标相对于桌面
}
}
可以看到,pos不管窗口怎样移动,menu总是出现在相同的地方。globalPos相对于窗口,跟着窗口移动
Qt中如何修改文件中的内容
使用QFile类进行文件操作不需要显式获得文件当前游标,使用seek设置当前游标位置,它会自动转移到pos参数所指向的位置,然后直接读写就行了。
请教一下,QT 中读取文件时,有没有倒着读取的。比如我想读取文件后100*100个数据,C/c++的seek函数就可以
QT的QIOdevice,QTextStream等也有seek函数,你可以调用它以实现你所需的功能。
QFile file("/home/hamad/lesson11.txt");
if(!file.open(QIODevice::ReadOnly)){
QMessageBox::information(0,"error", file.errorString());
}
QTextStream in(file);
//in.pos(); //返回当前文件指针位置
in.seek(POS)//POS为你要跳转到的位置,这里最好接收下返回值,以便出错处理
while(!in.atEnd()){
QString line =in.readLine();
QStringList fields = line.split(",");
model-appendRow(fields);
}
file.close();