小编Dav*_*and的帖子

Qt - 确定绝对小部件和光标位置

我有一个包含多个孩子的QWidget.最终目标是能够从一个窗口小部件拖放到另一个窗口小部件,在窗口小部件之间移动.我有一个信号被激发到我的父窗口小部件的控制器,并可以确定拖动何时正确开始和结束.我目前的问题是确定鼠标在鼠标上方是否在目标小部件之上.

当我在文档中看到underMouse时,我很兴奋,但是在拖放事件期间它不起作用(当我测试时,它似乎返回了不正确的值).如果做不到这一点,我的目标是找到包含目标小部件的矩形,并查找它是否包含鼠标上的鼠标坐标.我不能简单地使用contentsRect,因为它返回相对于它被调用的小部件的位置.我认为mapToGlobal会给我绝对的屏幕像素值,但它也会一直失败.我尝试在父窗口小部件的窗口上调用mapTo,但这似乎也失败了.

下面的代码显示了我用各种方法得到的各种QRects和QPoints.也许有一个简单的错误,所以我提供了所有.

QRect relativeWidgetRect = targetWidget->contentsRect();
QRect *absoluteWidgetRect = new QRect(QWidget::mapToGlobal(relativeWidgetRect.topLeft()), QWidget::mapToGlobal(relativeWidgetRect.bottomRight()));
QRect *widgetRect = new QRect(mapTo(window(), relativeWidgetRect.topLeft()), mapTo(window(), relativeWidgetRect.bottomRight()));
QPoint relativeMousePos = QCursor::pos();
QPoint absoluteMousePos = QWidget::mapToGlobal(relativeMousePos);
QPoint widgetMousePos = mapTo(window(), relativeMousePos);
Run Code Online (Sandbox Code Playgroud)

mapToParent不能用于我的目的,因为目标窗口小部件实际上是顶级父窗口的子窗口的父级.

更新这里是最终解决的代码.在我的顶级窗口小部件(它是源窗口小部件和目标窗口小部件的祖先)中,我添加了以下内容:

QRect widgetRect = targetWidget->Geometry();
QPoint mousePos = targetWidget->mapFromGlobal(QCursor::pos());
if(widgetRect.contains(mousePos))
{
// Logic
}
Run Code Online (Sandbox Code Playgroud)

c++ qt

33
推荐指数
2
解决办法
5万
查看次数

用另一个子字符串替换子字符串

我想在每次出现在我的NSString对象中时将字符串"abc"替换为"def":"axcd abc amamam dff abc kdj abc"

我怎么做??

谢谢,

Sagiftw

string replace objective-c nsstring

28
推荐指数
1
解决办法
3万
查看次数

处理巨大的SQL结果集

我正在使用一个相当大的mysql数据库(几百万行),其中一列存储blob图像.该应用程序尝试获取图像的子集并在其上运行一些处理算法.我遇到的问题是,由于我拥有相当大的数据集,我的查询返回的数据集太大而无法存储在内存中.

目前,我已将查询更改为不返回图像.迭代结果集时,我运行另一个选择,它抓取与当前记录相关的单个图像.这可行,但成千上万的额外查询导致性能下降是不可接受的.

我的下一个想法是将原始查询限制为10,000个结果左右,然后继续查询超过10,000行的跨度.这似乎是两种方法之间的道路妥协.我觉得可能有一个我不了解的更好的解决方案.有没有另一种方法只能在内存中同时拥有巨大结果集的一部分?

干杯,

戴夫麦克莱兰德

.net c# mysql ado.net

9
推荐指数
1
解决办法
2358
查看次数

5
推荐指数
1
解决办法
6899
查看次数

Qt信号包含在ifdef中

我的Qt项目链接到一个仅限linux的库.当项目在linux下运行时,我希望使用该库中定义的类型在事件上触发信号.但是,我的一个复杂因素是该项目还必须在Windows中构建.显然,这个信号和捕获它的插槽在Windows中不存在,这很好.但是,我发现Qt的moc工具无法识别#ifdef __linux__出发出信号的代码存在的问题.我的代码看起来像这样:

[SomeFile.h]

#ifdef __linux__
signals:
  void SomeSignal(SomeTypeDefinedInTheLinuxLibrary);
#endif
Run Code Online (Sandbox Code Playgroud)

[SomeFile.cpp]

#ifdef __linux__
  emit SomeSignal(someObject);
#endif
Run Code Online (Sandbox Code Playgroud)

当我尝试使用g ++编译它时,我收到错误: SomeFile.cpp:(.text+0x858c): undefined reference to SomeFile::SomeSignal(SomeTypeDefinedInTheLinuxLibrary)

任何想法如何让moc和#ifdefs一起玩得好?

qt g++ conditional-compilation

5
推荐指数
1
解决办法
1791
查看次数

将int转换为int []

我有一个数据集,我试图将数据集的所有ID都放入数据行,最后将其保存在一个int数组中.它不适合我.它说"Cannot implicitly convert from type int to int[]"

Dataset ds = new BusinessLogic().Getsamples(MerchantID);

Datarow dr = ds.Tables[0].Rows[0];

int[] SampleID = Convert.ToInt32(dr["Id"]);
Run Code Online (Sandbox Code Playgroud)

提前致谢..

c# asp.net

1
推荐指数
2
解决办法
6486
查看次数