小编use*_*240的帖子

如何在QAbstractTableModel中设置数据

我需要用Qt实现一个表.

我相信我会使用这个模型使用QTableView来起诉QAbstractTableModel.

我知道我必须编辑模型的rowCount(),columnCount()和data()函数.

但是,我不明白如何在模型中精确设置数据,以便data()函数可以检索它.

为此目的提供了setData()函数吗?我已经看到它需要EditRole作为其参数,我不想要,因为我不希望我的表可编辑.

那么,如何使用data()函数在模型中"设置"数据,或者让模型获得数据?

另外,如何调用data()函数,即谁调用它以及需要调用它的位置?

请帮我解决一下这个.

谢谢.

qt qtableview qabstracttablemodel

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

将子控件的click事件传递给父控件

我有一个Windows窗体,有一个窗格,其中包含从Windows窗体派生的另一个类.它包含在窗格中作为控件.它本身包含两个按钮.

我希望子控件的事件一直传递到父窗口.例如,窗格中的子窗口有一个Cancel按钮,应该关闭它.我想要父控件,即关闭主窗口,但是如何拦截子控件的按钮单击事件?

我可以修改子控件,但只有在没有其他方法以正确的方式实现这一点时,我宁愿避免它.

.net c# user-controls controls winforms

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

对强命名的 .NET 程序集进行数字签名

我有一个 .NET 程序集,我对其进行了强命名,并将其放入 GAC 中。.pfx但是,稍后还会使用文件对同一程序集进行数字签名,以进行数字签名。
我注意到这个经过双重签名的程序集未通过强名称验证,并且不会安装在目标计算机的 GAC 中。

数字签名过程是否有可能删除 SN 密钥生成的强命名过程?

数字签名是必不可少的,如果两者不兼容,那么文件可以由数字签名吗?.pfx像 SN 命名过程一样简单地由文件对文件进行签名?

另外,程序集位于C++/CLI,而不是C#

编辑:查看MSDN 文档,它说是否使用链接器选项进行强命名,以及是否使用像这样的后处理工具mt.exe(我不确定是否Signtool.exe属于这些工具),则需要重新签署程序集。

另外,这个声明:

如果在开发环境中生成时使用签名属性,则可以通过在生成后事件中显式调用 sn.exe(Sn.exe(强名称工具))来成功对程序集进行签名。

...有点令人困惑。它指的是哪些属性,CLR属性还是Linker选项?

.net strongname c++-cli authenticode digital-signature

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

使用 QMenu 并传递参数

我有一个QMenu动态构建的几个菜单项。

为此,我迭代了一组菜单项,其中包含名称和操作(如果菜单项被击中,则需要采取这些操作),并继续将它们添加到上下文菜单中。所有菜单项都需要连接到一个公共插槽

但不知何故触发动作不会发生。即到达连接语句,但控制没有传递到指定的SLOT,不采取任何行动。

for (int i=0; i<Action_List.size();i++)
{
    tempAct1 = Action_List.at(i); //Action List has the list of Actions
    Context_Menu->addAction(tempAct1);
}
if (Context_Menu!=NULL) {
    Context_Menu->exec(QCursor::pos());
    int r = connect(Context_Menu, SIGNAL(triggered(QAction *)), 
                    this, SLOT(SPlusCommand(QAction *)));
}

int P14MainWindow::SPlusCommand ( QAction* Action)
{
    QVariant tempstr = Action->data();
    QString Qs = tempstr.toString();
    return QPwLocalClient::ExecuteCommand(Qs);
}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我我哪里出错了,好吗?

c++ qt qmenu qt-signals

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

中心在QTableView中对齐单元格的内容

我有一个QTableView.

有没有办法对齐中心,这个视图的所有单元格内容?

我没有使用任何代表.它只是AbstractTableModel作为模型添加到一个QTableView.

我应该如何将每个细胞内容与中心对齐?

谢谢.

qt qtableview qabstracttablemodel

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

在焦点外单击鼠标时隐藏/关闭菜单

我有一个遗留代码,其中完成了WIn 32编程.

在这里,有一个托盘图标,当右键单击时会启动菜单.

但是,即使在焦点区域外单击,菜单仍会保留.

当我在其他地方点击鼠标时,如何关闭菜单?

像Qt这样的框架管理得很好.我是否必须跟踪鼠标指针,捕获点击并查看它是否落在菜单区域之外?

代码在遗留C中,并且没有使用面向对象的概念.所以不像我可以在这里覆盖一些东西.

请指教,谢谢.

winapi menu

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

多显示器屏幕上的应用程序窗口和中心放置

我有一个QMainWindow由另一个应用程序启动的 。

问题是,在多显示器设置中,启动 my 的应用程序QMainWindow可能驻留在第三个屏幕上,但我的窗口将始终在第一个屏幕上启动。

我通过以下方式解决了这个问题......

QDesktopWidget *m = new QDesktopWidget();
QPoint p= QCursor::pos();
int r= m->screenNumber(p); //get the screennumber where the mouse is
QRect d=m->screenGeometry(r);
QPoint l = d.center(); //not the correct solution
mainWin->move(l); //move the window to that screen
mainWin->show(); //launch
Run Code Online (Sandbox Code Playgroud)

现在,我如何在屏幕中央启动这个窗口。d.center()不是正确的方法,因为窗口的左上角将从中心点启动,所以它会被遮挡。

好心提醒。

qt desktop-application qmainwindow

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

在运行时加载和使用类型库(.tlb)

我有一个.tlb文件,通过COMa的功能公开C# DLL.我希望.tlb在运行时加载它并使用我的本机项目中的函数.

虽然我可以使用LoadTypeLib函数加载库,但我不确定ITypeLib返回如何帮助我使用函数.NET DLL.用常规的DLL,我可以用GetProcAddressDLL手柄和获取函数的地址,但我不认为它会与类型库工作?

那怎么接近呢?

c++ com dll tlbimp

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

尽管有正在运行的服务,Docker 容器仍会退出

我是新手Docker。我希望我的Windwows-ServerCore基于容器以固定的时间间隔执行任务。出于这个原因,我决定在我的容器中安装一个服务,它可以定期触发这些任务。

这是我的 dockerfile -

FROM test2
SHELL ["powershell.exe", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'Continue'; $verbosePreference='Continue';"]
RUN New-LocalUser -Name "testuser" -Password (ConvertTo-SecureString -AsPlainText "CrackPassword!" -Force) -FullName "Test.User" -Description "LocalAdministrator"
RUN Add-LocalGroupMember -Group administrators -Member  testuser -Verbose
RUN "C:/Windows/Microsoft.NET/Framework64/v4.0.30319/InstallUtil.exe" /username=.\testuser /password=CrackPassword! /LogToConsole=true /ShowCallStack TestDockerService.exe
ENTRYPOINT ["powershell"] 
CMD Start-Service \""DockerService\""
Run Code Online (Sandbox Code Playgroud)

问题是这个容器在启动后退出,大概是Powershell作为入口命令启动服务,随着它的工作结束,容器随之关闭。

如何启用容器,并通过扩展使我的服务继续运行?

我读了关于 的-d论点docker run,这将detach是容器,因此 docker 将不再监视它,但这也意味着无法访问STDIN我可能需要的等。是否有另一种方法可以完成相同的操作,或者是-d正确的方法?

也许另一种选择是从 a 启动服务batch file并在启动命令后运行无限循环,这允许容器保持活动状态?

更广泛地说,Docker container …

powershell windows-services docker dockerfile

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

"using"关键字用于分配新的C++/CLI类

我在'C++/CLI'中有一个程序集,它实现了某些类.我们假设该类是'SomeType'.

现在,在'C#'开发的应用程序中,执行以下操作 -

while(!Console.KeyAvailable)
{
   using(SomeType type = new SomeType())
   {
       type.doSomething(); //do something
   }
}
Run Code Online (Sandbox Code Playgroud)

在任何情况下都会有任何后果,例如内存泄漏等,比如是否存在未处理的异常或任何此类情况?

我读到using关键字通常应该用于实现IDisposable的类,但对于C++/CLI类?

c# memory idisposable c++-cli

0
推荐指数
1
解决办法
551
查看次数