是否可以从OS X计算机编译swift二进制文件,以便它在运行Linux的服务器上作为单个二进制文件运行,而不需要动态链接的额外库?
我正在考虑将一个传递-target给swift命令并传递另一个参数以使其静态链接所有依赖项,但我不确定具体命令是什么.
确切的价值-target似乎相当难以捉摸.
我是否需要知道确切的目标分布才能将正确的字符串传递给-target参数?
诺基亚刚刚在Qt的最新beta版本中推出了Qt Quick(在声明中使用CSS/HTML构建UI),查看这个示例页面,它可以构建精美的现代UI,非常酷!
相反,由'传统Qt'开发的UI似乎不那么花哨(我可能错了,请参阅下面的免责声明).
所以我的问题是,您是否会将"Traditional Qt"或"Qt Quick"用于新的桌面程序?为什么?
我最初的想法:
'传统Qt':
优点:
使用的整体技术更少,更简单,如果你使用PySide,你只用Python编写代码,不必乱用Qt Quick中类似CSS/JS的东西;
它比较成熟.
缺点:
建立花哨的UI似乎更难?
'Qt Quick':
优点和缺点:反过来.
Edit:Qt Quick有一个缺点,纠正我,如果我错了,你不能以所见即所得的方式设计Qt Quick UI,对吧?
免责声明:我是Qt,PySide和Python的新手,最近才开始使用这些技术来构建桌面程序.
我们可以很容易地在Qt中使用Objective-C和C++.
观看了Apple的许多WWDC 2015演讲,我预计Swift将取代OS-X(和iOS)开发的Objective-C; 所有的演示都使用了Swift.
考虑到你可以一起使用Objective-C和Swift,使用桥接头,是否可以在Qt项目中编译Swift代码并使用C++访问Swifts的第一类对象(Classes,Structs,Enums等)?
如果有可能...
从Qt调用Objective-C函数需要将代码包装在C函数中,并从Qt调用C头.
从Objective-C调用Swift需要一个桥接头来表示哪些Swift文件可用.然后在XCode项目中引用此标头; 我们可以在Qt .pro中做到这一点,如果是这样,怎么样?
假设我们可以指定桥接头,我们仍然只能从Objective-C文件调用Swift,但是可以直接从Qt中调用Swift,在C++中?
在Qt创建器中使用设计器我创建了一个对话框,其中包含垂直布局中的各种小部件.其中一个小部件是QLabel,其中自动换行设置为true.QLabel的文本在对话框显示之前设置.
QLabel的最大宽度和高度为16777215,垂直尺寸策略设置为" 扩展",水平线为" 首选".我已经尝试过更改大小政策.
我遇到的问题是,如果文本很大,QLabel无法相应调整,文本被剪裁,如下所示: -

我尝试在设置文本后调用updateGeometry(),并尝试在垂直布局上调用update,但似乎没有任何区别.理想情况下,我希望QLabel垂直调整以适应文本.
谁能告诉我我在这里失踪了什么?
我试图从文本编辑中获取文本并将其存储在QString中.
当我写这个
QString text = ui->textEdit->toPlainText();
Run Code Online (Sandbox Code Playgroud)
它只读取第一个'\n'之前的文本.那么如何才能得到整个文本中的'\n'.
这是从这样的插槽调用: -
void MainWindow::on_pushButton_clicked()
{
QString text = ui->textEdit->toPlainText();
ui->label_2->setText(text);
}
Run Code Online (Sandbox Code Playgroud) 当我使用最少量的代码启动一个新的Qt应用程序并运行它时,我看到有许多线程正在运行,其中至少为2并且可以多达5个.它通常在2处结束,直到我拖动窗口,此时我看到最多4个线程在运行.
这是我正在使用的所有代码: -
#include <QApplication>
#include <QWidget>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget mainWindow;
mainWindow.show();
return a.exec();
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么有不同的线程以及它们可能是什么?最初我只期望一个,但如果用一秒钟处理消息就不会感到惊讶.但是,什么可以解释其他线程?
我用一些项目创建 QListWidget。
QHBoxLayout* h_layout = new QHBoxLayout;
h_layout->setMargin( 0 );
menu_list_widget_ = new QListWidget;
menu_list_widget_->setFlow(QListView::TopToBottom);
menu_list_widget_->setViewMode(QListView::IconMode);
menu_list_widget_->setMovement(QListView::Static);
menu_list_widget_->setFixedWidth( 100 );
QListWidgetItem* lwi;
menu_list_widget_->addItem( lwi = new QListWidgetItem(QIcon(":/icons/color_pencils.png"), "?????") );
lwi->setTextAlignment(Qt::AlignCenter);
menu_list_widget_->addItem( lwi = new QListWidgetItem(QIcon(":/icons/font.png"), "?????") );
lwi->setTextAlignment(Qt::AlignCenter);
lwi->setHidden( true );
// etc
h_layout->addWidget(menu_list_widget_, 0, Qt::AlignHCenter)
Run Code Online (Sandbox Code Playgroud)
但是项目没有居中对齐
为什么?
我有以下代码:
void class::Testfunc()
{
QTimer* timer = new QTimer;
QObject::connect(timer, &QTimer::timeout, [this](){
emit Log("Time out...");
TestFunc(serverAddress, requestsFolderPath);
// deleteLater(); //*** why does this crash if used to replace the connect below?
});
connect(timer, &QTimer::timeout, timer, &QTimer::deleteLater);
timer->setSingleShot(true);
timer->start(1000);
}
Run Code Online (Sandbox Code Playgroud)
创建一个单击计时器,其时间连接到lambda函数,该函数每秒记录lambda函数的入口(将文本打印到stdout)并再次调用该函数.
这没有问题.但是,如果我删除对deleteLater的连接调用(在lambda函数下面),但在lambda函数中启用deleteLater调用,则该函数将失败.它打印一次,不久之后,在尝试删除计时器对象时崩溃.
这个实例中两个deleteLater调用之间的区别是什么以及为什么将deleteLater放在lambda函数中会导致问题,而创建一个单独的连接按预期工作,即使两个都调用deleteLater以响应Timer的超时信号?
给定应用程序的 pid,是否有任何方法以编程方式检测该应用程序是否在 OSX 沙箱环境中运行?
理想情况下,我想知道某个地方是否有 API 调用,最好是用 C,而不是 Objective-C(对于守护进程,所以不使用 Cocoa),但如果没有,还有其他检查方法吗?
我一直在Qt中使用Objective-C与C++混合而没有任何问题; 在需要时使用.mm文件.
在将我的构建机器升级到Mavericks之后,我最初注意到框架头文件丢失了,因此安装了XCode命令行工具,修复了这个问题.
现在,我在编译Objective-C文件时遇到问题,错误抱怨框架中的代码.例如: -
系统/库/框架/ Foundation.framework/Versions/C/Headers/NSUserNotification.h:16:44:错误:在枚举器之间缺少','NSUserNotificationActivationTypeReplied NS_AVAILABLE(10_9,NA)= 3
和
/System/Library/Frameworks/AppKit.framework/Versions/C/Headers/NSApplication.h:58:34:错误:预期';' 在顶级声明符之后typedef NSInteger NSModalResponse NS_AVAILABLE_MAC(10_9);
我已升级到Qt 5.2.1,但问题仍然存在,而且它来自包括标准框架标题; 在这种情况下: -
#import <NSUserNotification.h>
#import <NSApplication.h>
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下小牛队的变化以及如何解决这些错误吗?