在过去的 3 个小时里,我一直在努力解决这个问题。 老实说,我对问这个问题犹豫不决,但似乎我的具体问题不会在任何地方得到回答。所以这是我的情况:
TL;DR:如何将新创建的窗口(在代码中或在 Qt Designer 中)与相应的部分链接起来。意思是,如何链接代码生成的窗口和 Qt Designer 以及相反的方式?
现在我正在 Visual Studio 2017 中使用 Qt5 开发一个Window 应用程序。
我希望在单击按钮时打开一个新窗口,然后使用 Qt Designer 对其进行编辑,就像我在主窗口中所做的那样。 (请记住,我主要使用 Visual Studio 2017 进行编程。)
我能够做到这一点。但是我不知道如何使用 Qt Designer 访问“类”和整个窗口。 我想我需要一个 *.ui 文件来将它输入到 Qt 设计器中,但我不知道如何创建它。 另外,我通读了整个文档,但根本不知道如何应用这些知识。
所以,我打开一个新窗口的代码如下所示:
mainprog.h:
class Program: public QMainWindow
{
Q_OBJECT
public:
Program(QWidget *parent = Q_NULLPTR);
private:
Ui::ProgramClass ui;
Ui::ProgramClass * uip = &ui;
private slots:
void on_pushbutton_settings_released();
};
mainprog.cpp:
Program::Program(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
connect(uip->pushButton_settings, SIGNAL(released()), this, SLOT(on_pushbutton_settings_released()));
}
//-----------------------------------------------
// Related function
void Program::on_pushbutton_settings_released()
{
qDebug() << "on_pushbutton_settings_released";
QWindow *settings_window = new QWindow();
settings_window->show();
}
这就是我创建和显示新窗口的方式(此处:settings_window)。 但是如何“访问”它的类和方法并在 Qt Designer 中编辑它呢?如果我在 Qt Creator 中,就不会有(或至少更少)问题,因为有很多教程并且 Qt Creator 会自动创建所有需要的文件。 但我在 Visual Studio 2017 中工作,因此我无法使用 Qt Designer/Creator/etc 的所有实用程序。
我想我可以创建特定的头文件和 *.cpp 文件。但话又说回来,我应该放在那里做什么?我发现总有一个“ui_Program.h”文件,而这个文件是通过读取 *.ui 文件创建的。 但是,即使我创建了这样的东西,如何让它读取所有内容?
或者我可能会反问:如何在我自己的 Qt5 C++ 代码中使用/链接 Qt Designer 中新创建的窗口以及所有相关类、 header 等?
最佳答案
看起来最简单的解决方案是使用 Qt VS Tool extension .该工具应处理 .ui 的创建-based 的小部件和自定义构建步骤(我自己没有使用过,希望开箱即用:)。
还有其他替代方案,例如使用支持 Qt 的第三方构建系统(如 CMake 或 Meson)或手动设置预构建步骤,但这是一个更广泛的主题。
我认为您会更喜欢上述方法,但我也会尝试直接回答您的问题。
I figured I need an *.ui file to feed it into the Qt Designer, but I have no clue on how to create that.
只需打开 Qt Designer 并使用“新建表单”对话框(或者单击“文件 > 新建”打开它),然后保存文件。
.ui文件是 XML 文件。为了生成代码,您需要使用 Qt 的 uic工具(代表 UI 编译器)来生成你的 ui_<something>.h文件。通常,这是自动完成的——我在第一部分中提到的工具每次都会执行此操作 .ui文件已修改。
一旦你有了这个生成的头文件,你就可以像处理 Program 一样使用它了。类:派生自QWidget ( QMainWindow 也是从它派生的),然后调用 setupUi在构造函数中。
还有一件事:QWindow 不是您想要的。对于 GUI 应用程序,您需要使用 QWidget反而。 QWindow由(顶级)内部使用 QWidgets有时直接使用(例如,当需要使用第三方渲染而不是 Qt 的 API 时)。您可以阅读更多相关信息 here .
关于c++ - Qt5 C++ 链接新窗口与 Qt Designer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52282018/
我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.
我正在尝试用Prawn生成PDF。在我的PDF模板中,我有带单元格的表格。在其中一个单元格中,我有一个电子邮件地址:cell_email=pdf.make_cell(:content=>booking.user_email,:border_width=>0)我想让电子邮件链接到“mailto”链接。我知道我可以这样链接:pdf.formatted_text([{:text=>booking.user_email,:link=>"mailto:#{booking.user_email}"}])但是将这两行组合起来(将格式化文本作为内容)不起作用:cell_email=pdf.make_c
如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:
在前面两节的例子中,主界面窗口的尺寸和标签控件显示的矩形区域等,都是用C++代码编写的。窗口和控件的尺寸都是预估的,控件如果多起来,那就不好估计每个控件合适的位置和大小了。用C++代码编写图形界面的问题就是不直观,因此Qt项目开发了专门的可视化图形界面编辑器——QtDesigner(Qt设计师)。通过QtDesigner就可以很方便地创建图形界面文件*.ui,然后将ui文件应用到源代码里面,做到“所见即所得”,大大方便了图形界面的设计。本节就演示一下QtDesigner的简单使用,学习拖拽控件和设置控件属性,并将ui文件应用到Qt程序代码里。使用QtDesigner设计界面在开始菜单中找到「Q
我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我
我想用这两种语言中的任何一种(最好是ruby)制作一个窗口管理器。老实说,除了我需要加载某种X模块外,我不知道从哪里开始。因此,如果有人有线索,如果您能指出正确的方向,那就太好了。谢谢 最佳答案 XCB,X的下一代API使用XML格式定义X协议(protocol),并使用脚本生成特定语言绑定(bind)。它在概念上与SWIG类似,只是它描述的不是CAPI,而是X协议(protocol)。目前,C和Python存在绑定(bind)。理论上,Ruby端口只是编写一个从XML协议(protocol)定义语言到Ruby的翻译器的问题。生
我有一个数组数组,想将元素附加到子数组。+=做我想做的,但我想了解为什么push不做。我期望的行为(并与+=一起工作):b=Array.new(3,[])b[0]+=["apple"]b[1]+=["orange"]b[2]+=["frog"]b=>[["苹果"],["橙子"],["Frog"]]通过推送,我将推送的元素附加到每个子数组(为什么?):a=Array.new(3,[])a[0].push("apple")a[1].push("orange")a[2].push("frog")a=>[[“苹果”、“橙子”、“Frog”]、[“苹果”、“橙子”、“Frog”]、[“苹果”、“
我有一个未排序的链接列表,我将其保存在旁边,我想单击每个链接并确保它转到真实页面而不是404、500等。问题是我不知道该怎么做。是否有一些我可以检查的对象会给我http状态代码或任何东西?mylinks=Browser.ul(:id,'my_ul_id').linksmylinks.eachdo|link|link.click#needtocheckfora200statusorsomethinghere!how?Browser.backend 最佳答案 我的回答与铁皮人的想法类似。require'net/http'require'
我一直在玩一个脚本,它在Chrome中获取选定的文本并在Google中查找它,提供四个最佳选择,然后粘贴相关链接。它以不同的格式粘贴,具体取决于当前在Chrome中打开的页面-DokuWiki打开的DokuWiki格式,普通网站的HTML,我想要我的WordPress所见即所得编辑器的富文本。我尝试使用pbpaste-Preferrtf来查看没有其他样式的富文本链接在粘贴板上的样子,但它仍然输出纯文本。在文本编辑中保存文件并进行试验后,我想出了以下内容text=%q|{\rtf1{\field{\*\fldinst{HYPERLINK"URL"}}{\fldrsltTEXT}}}|te