【问题标题】:Displaying cmd.exe window inside a Qt widget在 Qt 小部件中显示 cmd.exe 窗口
【发布时间】:2014-05-02 07:02:11
【问题描述】:

我需要从 Qt 小部件内部启动基于 CLI(命令行界面)的工具(类似于 cmd.exe),以便用户可以从小部件内部与此 CLI 交互。我唯一的选择是使用 QProcess 并启动 myprog.exe,但在这种情况下,它将有一个单独的窗口。我想要的基本上是嵌入在 QTabWidget 中的命令行。最好的方法是什么?

【问题讨论】:

  • 这种问题更适合programmers.stackexchange.com
  • 我已经使用 setProcessChannelMode 和 readyRead() 信号从 QProcess 成功启动了一个命令行程序,但它没有显示在单独的窗口中。究竟是什么问题?
  • @Bgie:问题是:我希望基于控制台的 myprog.exe 嵌入到我的 QTabWidget 的选项卡之一中。更准确地说,控制台窗口应该像我的标签栏的子小部件一样。功能应该是相同的,即。接受来自用户的命令,执行它们并在嵌入式控制台窗口中显示输出。
  • 没有开箱即用的解决方案。您需要自己编写该小部件。我使用了一个简单的 textedit,旁边有一个按钮来发送输入,还有一个纯文本框来显示输出。
  • 我会试试的,Bgie!谢谢!!

标签: c++ windows qt qwidget qtgui


【解决方案1】:

有几种开箱即用的解决方案,例如 QTermWidgetQConsole。您不需要自己编写该小部件。

这是一个如何使用它的示例:

console = new QTermWidget();

QFont font = QApplication::font();
font.setFamily("Monospace");
font.setPointSize(12);

console->setTerminalFont(font);
console->setScrollBarPosition(QTermWidget::ScrollBarRight);
console->setColorScheme("WhiteOnBlack");

ui->tabWidget->insertTab(ui->tabWidget->currentIndex(), console, QString(QDir::currentPath()));

按照 cmets 的建议重新发明自己的解决方案几乎没有意义。

【讨论】: