小编Cah*_*tcü的帖子

Qt信号插槽架构不需要的无限循环

我有qt信号槽系统的问题.

首先,我创建了一个名为System in Singleton模式的类,因此我可以访问我想要的实例.系统有一个信号SelectionChanged.

我有一个列表小部件,我将它的itemSelectionChanged信号连接到我的自定义插槽,称为onSelectionChanged.在onSelectionChanged插槽中,我发出System的SelectionChanged信号.还没有问题.

在我的软件设计中,许多GUI小部件或自定义类可以使用一系列对象,而System的SelectionChanged信号可以由列表小部件以外的小部件发出.

所以我在列表小部件中创建一个名为OnSystemSelectionChanged的插槽,然后将其连接到System的SelectionChanged信号.OnSystemSelectionChangedSlot是这样的.

void MyListWidget::OnSystemSelectionChanged(QObject *sender)
{
    if (sender == this) return;
    // Then I want to get a list of selected objects and set them as selection of this widget like this:
    this->SetSelection(System::Instance()->GetSelectedObjects());
}
Run Code Online (Sandbox Code Playgroud)

但问题是当我开始设置列表小部件的所选项时,它将发出itemSelectionChanged信号并且将调用我的onSelectionChanged插槽.然后插槽将发出System的SelectionChanged信号,然后也将调用OnSystemSelectionChanged.它将通过sender参数停止,但是没有方法可以立即设置列表小部件的所选项目.

我怎么能解决这个问题呢.

我希望我能很好地解释我的问题.提前致谢.

编辑:更正拼写和语法错误.

c++ qt signals-slots

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

Qt WebKit On Mobile

我正在尝试渲染一个网页.Qt的说,他们的QtWebKit的适用于移动自4.8 这里

如果您想要定位移动设备,则应考虑使用QGraphicsWebView而不是QWebView.

它们都在QtWebKit下.那我错过了什么?

mobile qt qtwebkit

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

C#.Net Windows消息给Delphi

我在ac#app和delphi应用程序之间遇到了Windows消息问题.

我做了一些c#到c#和delphi到delphi的例子,但我不能用c#来delphi

这是我的相关c#app,它是WM发送者代码

    void Game1_Exiting(object sender, EventArgs e)
    {
        Process[] Processes = Process.GetProcesses();

        foreach(Process p in Processes)
            if(p.ProcessName == Statics.MainAppProcessName)
                SendMessage(p.MainWindowHandle, WM_TOOTHUI, IntPtr.Zero, IntPtr.Zero);


    }

    private const int WM_TOOTHUI = 0xAAAA;
    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    public static extern int SendMessage(IntPtr hwnd, [MarshalAs(UnmanagedType.U4)] int Msg, IntPtr wParam, IntPtr lParam);
Run Code Online (Sandbox Code Playgroud)

这是我的相关delphi应用程序,它是WM收件人代码

    const
      WM_TOOTHUI = 43690;
    type
      private
        MsgHandlerHWND : HWND;
        procedure WndMethod(var Msg: TMessage);

    procedure TForm1.WndMethod(var Msg: TMessage);
    begin
      if Msg.Msg = WM_TOOTHUI then
      begin
        Caption := 'Message Recieved'; …
Run Code Online (Sandbox Code Playgroud)

.net c# delphi windows-messages

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

QVector2D*未知大小

我的问题是关于Qt编译器错误:"QVector2D*:未知大小"

我有一个Mesn类,它包含一些网格定义的数据,如下所示.

class Mesh
{

public:

Mesh();
Mesh(const Mesh &other);
~Mesh();

private:

QVector<QVector3D> m_colors;
QVector<int> m_faces;
QVector<int> m_lines;
QVector<QVector3D> m_normals;
QVector<QVector2D> m_uvs;
QVector<QVector3D> m_vertices;
};
Run Code Online (Sandbox Code Playgroud)

在cpp文件中我就是这个.

Mesh::Mesh()
{
m_colors   = QVector<QVector3D>();
m_faces    = QVector<int>();
m_lines    = QVector<int>();
m_normals  = QVector<QVector3D>();
m_uvs      = QVector<QVector2D>();
m_vertices = QVector<QVector3D>();
}

Mesh::Mesh(const Mesh &other)
{
m_colors   = other.GetColors();
m_faces    = other.GetFaces();
m_lines    = other.GetLines();
m_normals  = other.GetNormals();
m_uvs      = other.GetUVs();
m_vertices = other.GetVertices();
}

Mesh::~Mesh()
{

}
Run Code Online (Sandbox Code Playgroud)

但是我收到的编译错误我只提到了m_uvs.代码有什么问题?

c++ qt

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

标签 统计

qt ×3

c++ ×2

.net ×1

c# ×1

delphi ×1

mobile ×1

qtwebkit ×1

signals-slots ×1

windows-messages ×1