如何获得qt对话框中控件的信息啊

时间:2021-09-11 05:53:08
就是通过程序获得别人对话框中控件的信息,在mfc里用spy++可以看出来,但是spy++看不到qt对话框控件的信息啊 如何获得qt对话框中控件的信息啊

11 个解决方案

#1


Qt 除了最*控件,控件默认是Alien的,不是系统的 native 控件,所以得不到其 ID。

#2


如何获得qt对话框中控件的信息啊那如果要获得控件的相关信息有什么办法么,譬如说复选框是否选中,edit框是否有值等等
大神 如何获得qt对话框中控件的信息啊

#3


引用 2 楼 suifenghuidong 的回复:
如何获得qt对话框中控件的信息啊那如果要获得控件的相关信息有什么办法么,譬如说复选框是否选中,edit框是否有值等等
大神 如何获得qt对话框中控件的信息啊


每个控件是有checked(bool)这个属性的,可以检测这个得到是否选中

#4


引用 3 楼 super_rat 的回复:
Quote: 引用 2 楼 suifenghuidong 的回复:

如何获得qt对话框中控件的信息啊那如果要获得控件的相关信息有什么办法么,譬如说复选框是否选中,edit框是否有值等等
大神 如何获得qt对话框中控件的信息啊


每个控件是有checked(bool)这个属性的,可以检测这个得到是否选中

那是否可以在得到句柄后,将当前的alien窗口用winid()转下得到native句柄然后通过checked得到属性?

#5


引用 1 楼 Inhibitory 的回复:
Qt 除了最*控件,控件默认是Alien的,不是系统的 native 控件,所以得不到其 ID。

那如果要获得控件的相关信息有什么办法么,譬如说复选框是否选中,edit框是否有值等等
大神

#6


引用 5 楼 suifenghuidong 的回复:
Quote: 引用 1 楼 Inhibitory 的回复:

Qt 除了最*控件,控件默认是Alien的,不是系统的 native 控件,所以得不到其 ID。

那如果要获得控件的相关信息有什么办法么,譬如说复选框是否选中,edit框是否有值等等
大神

把所有的控件都标记为native的

#7


引用 6 楼 Inhibitory 的回复:
Quote: 引用 5 楼 suifenghuidong 的回复:

Quote: 引用 1 楼 Inhibitory 的回复:

Qt 除了最*控件,控件默认是Alien的,不是系统的 native 控件,所以得不到其 ID。

那如果要获得控件的相关信息有什么办法么,譬如说复选框是否选中,edit框是否有值等等
大神

把所有的控件都标记为native的

可否讲下如何标记为native,没接触过qt,之前都是弄mfc,麻烦了

#8


不是很明白你这么做的背景。
1. 同一个应用程序的窗口A获得窗口B上控件的数据。
2. 应用程序A获得应用程序B上某一个窗口上的控件的数据。

只有背景明确了才知道怎么做。

#9


引用 8 楼 Inhibitory 的回复:
不是很明白你这么做的背景。
1. 同一个应用程序的窗口A获得窗口B上控件的数据。
2. 应用程序A获得应用程序B上某一个窗口上的控件的数据。

只有背景明确了才知道怎么做。

我现在弄的是应用程序A获得应用程序B上某一个窗口上的控件的数据。我想将获取qt对话框控件信息这部分功能做成dll,然后供mfc调用,mfc传控件的句柄,而qt做的dll中的接口返回控件信息即可

#10


Native Widgets vs Alien Widgets

Introduced in Qt 4.4, alien widgets are widgets unknown to the windowing system. They do not have a native window handle associated with them. This feature significantly speeds up widget painting, resizing, and removes flicker.

Should you require the old behavior with native windows, you can choose one of the following options:

    Use the QT_USE_NATIVE_WINDOWS=1 in your environment.
    Set the Qt::AA_NativeWindows attribute on your application. All widgets will be native widgets.
    Set the Qt::WA_NativeWindow attribute on widgets: The widget itself and all of its ancestors will become native (unless Qt::WA_DontCreateNativeAncestors is set).
    Call QWidget::winId to enforce a native window (this implies 3).
    Set the Qt::WA_PaintOnScreen attribute to enforce a native window (this implies 3).

See also QEvent, QPainter, QGridLayout, and QBoxLayout.

#11


引用 10 楼 Inhibitory 的回复:
Native Widgets vs Alien Widgets

Introduced in Qt 4.4, alien widgets are widgets unknown to the windowing system. They do not have a native window handle associated with them. This feature significantly speeds up widget painting, resizing, and removes flicker.

Should you require the old behavior with native windows, you can choose one of the following options:

    Use the QT_USE_NATIVE_WINDOWS=1 in your environment.
    Set the Qt::AA_NativeWindows attribute on your application. All widgets will be native widgets.
    Set the Qt::WA_NativeWindow attribute on widgets: The widget itself and all of its ancestors will become native (unless Qt::WA_DontCreateNativeAncestors is set).
    Call QWidget::winId to enforce a native window (this implies 3).
    Set the Qt::WA_PaintOnScreen attribute to enforce a native window (this implies 3).

See also QEvent, QPainter, QGridLayout, and QBoxLayout.

谢谢了,我根据这几个再去看看

#1


Qt 除了最*控件,控件默认是Alien的,不是系统的 native 控件,所以得不到其 ID。

#2


如何获得qt对话框中控件的信息啊那如果要获得控件的相关信息有什么办法么,譬如说复选框是否选中,edit框是否有值等等
大神 如何获得qt对话框中控件的信息啊

#3


引用 2 楼 suifenghuidong 的回复:
如何获得qt对话框中控件的信息啊那如果要获得控件的相关信息有什么办法么,譬如说复选框是否选中,edit框是否有值等等
大神 如何获得qt对话框中控件的信息啊


每个控件是有checked(bool)这个属性的,可以检测这个得到是否选中

#4


引用 3 楼 super_rat 的回复:
Quote: 引用 2 楼 suifenghuidong 的回复:

如何获得qt对话框中控件的信息啊那如果要获得控件的相关信息有什么办法么,譬如说复选框是否选中,edit框是否有值等等
大神 如何获得qt对话框中控件的信息啊


每个控件是有checked(bool)这个属性的,可以检测这个得到是否选中

那是否可以在得到句柄后,将当前的alien窗口用winid()转下得到native句柄然后通过checked得到属性?

#5


引用 1 楼 Inhibitory 的回复:
Qt 除了最*控件,控件默认是Alien的,不是系统的 native 控件,所以得不到其 ID。

那如果要获得控件的相关信息有什么办法么,譬如说复选框是否选中,edit框是否有值等等
大神

#6


引用 5 楼 suifenghuidong 的回复:
Quote: 引用 1 楼 Inhibitory 的回复:

Qt 除了最*控件,控件默认是Alien的,不是系统的 native 控件,所以得不到其 ID。

那如果要获得控件的相关信息有什么办法么,譬如说复选框是否选中,edit框是否有值等等
大神

把所有的控件都标记为native的

#7


引用 6 楼 Inhibitory 的回复:
Quote: 引用 5 楼 suifenghuidong 的回复:

Quote: 引用 1 楼 Inhibitory 的回复:

Qt 除了最*控件,控件默认是Alien的,不是系统的 native 控件,所以得不到其 ID。

那如果要获得控件的相关信息有什么办法么,譬如说复选框是否选中,edit框是否有值等等
大神

把所有的控件都标记为native的

可否讲下如何标记为native,没接触过qt,之前都是弄mfc,麻烦了

#8


不是很明白你这么做的背景。
1. 同一个应用程序的窗口A获得窗口B上控件的数据。
2. 应用程序A获得应用程序B上某一个窗口上的控件的数据。

只有背景明确了才知道怎么做。

#9


引用 8 楼 Inhibitory 的回复:
不是很明白你这么做的背景。
1. 同一个应用程序的窗口A获得窗口B上控件的数据。
2. 应用程序A获得应用程序B上某一个窗口上的控件的数据。

只有背景明确了才知道怎么做。

我现在弄的是应用程序A获得应用程序B上某一个窗口上的控件的数据。我想将获取qt对话框控件信息这部分功能做成dll,然后供mfc调用,mfc传控件的句柄,而qt做的dll中的接口返回控件信息即可

#10


Native Widgets vs Alien Widgets

Introduced in Qt 4.4, alien widgets are widgets unknown to the windowing system. They do not have a native window handle associated with them. This feature significantly speeds up widget painting, resizing, and removes flicker.

Should you require the old behavior with native windows, you can choose one of the following options:

    Use the QT_USE_NATIVE_WINDOWS=1 in your environment.
    Set the Qt::AA_NativeWindows attribute on your application. All widgets will be native widgets.
    Set the Qt::WA_NativeWindow attribute on widgets: The widget itself and all of its ancestors will become native (unless Qt::WA_DontCreateNativeAncestors is set).
    Call QWidget::winId to enforce a native window (this implies 3).
    Set the Qt::WA_PaintOnScreen attribute to enforce a native window (this implies 3).

See also QEvent, QPainter, QGridLayout, and QBoxLayout.

#11


引用 10 楼 Inhibitory 的回复:
Native Widgets vs Alien Widgets

Introduced in Qt 4.4, alien widgets are widgets unknown to the windowing system. They do not have a native window handle associated with them. This feature significantly speeds up widget painting, resizing, and removes flicker.

Should you require the old behavior with native windows, you can choose one of the following options:

    Use the QT_USE_NATIVE_WINDOWS=1 in your environment.
    Set the Qt::AA_NativeWindows attribute on your application. All widgets will be native widgets.
    Set the Qt::WA_NativeWindow attribute on widgets: The widget itself and all of its ancestors will become native (unless Qt::WA_DontCreateNativeAncestors is set).
    Call QWidget::winId to enforce a native window (this implies 3).
    Set the Qt::WA_PaintOnScreen attribute to enforce a native window (this implies 3).

See also QEvent, QPainter, QGridLayout, and QBoxLayout.

谢谢了,我根据这几个再去看看