我已经从CMake的Mac 64位网站安装了CMake 2.8.11.2软件包.我们最近将一个项目从Qt 4升级到Qt 5,并且CMake升级是强制要求CMake使用Qt 5.但是,当我键入时,cmake .我收到以下错误:
CMake Error: Could not find CMAKE_ROOT !!!
CMake has most likely not been installed correctly.
Modules directory not found in
/Applications/CMake 2.8-11.app/Contents/bin
CMake Error: Error executing cmake::LoadCache(). Aborting.
Run Code Online (Sandbox Code Playgroud)
我可以确认,bin文件夹中没有modules目录.我真的不知道如何解决这个错误,或者如何获得所需的模块.
我正在使用Docker创建一个容器来测试我的Mac上基于PHP和MySQL构建的Web应用程序.我的PHP应用程序是使用Fat-Free Framework for MVC和路由构建的.我有两个Dockerfiles,一个用于MySQL,一个用于PHP.我已经成功使用了测试Docker应用程序,所以我相信我的图像安装正确.
错误的主要部分:
Internal Server Error
SQLSTATE[HY000] [2002] No such file or directory
[fatfree/lib/DB/SQL.php:466] PDO->__construct('mysql:host=127.0.0.1;port=3306;dbname=robohome','root','password',array(1002=>'SET NAMES utf8;'))
[fatfree/app/Controllers/Controller.php:24] DB\SQL->__construct('mysql:host=127.0.0.1;port=3306;dbname=robohome','root','password')
Run Code Online (Sandbox Code Playgroud)
注意,如果我使用127.0.0.1而不是我连接localhost得到一个略有不同的错误,说:SQLSTATE[HY000] [2002] Connection refused
我的PHP Dockerfile:
FROM php:5.6-apache
RUN docker-php-ext-install mysqli pdo pdo_mysql
RUN a2enmod rewrite
Run Code Online (Sandbox Code Playgroud)
我的MySQL Dockerfile:
FROM mysql:5.7
ENV MYSQL_ROOT_PASSWORD password
ENV MYSQL_DATABASE robohome
COPY ./schema.sql /docker-entrypoint-initdb.d/
Run Code Online (Sandbox Code Playgroud)
我的Controller.php文件错误提及第24行:
<?php
namespace Controllers;
class Controller
{
protected $f3;
protected $db;
public function __construct()
{
$f3 = \Base::instance();
$this->f3 = $f3;
$mysqlServerName = …Run Code Online (Sandbox Code Playgroud) 我有一个基于Qt的应用程序,适用于Mac和Windows.当用户安装软件时,它还会安装包含大量HTML文档页面的文件夹.我如何找到程序安装的位置,以便当用户尝试从应用程序中打开"帮助"时,它们会被带到index.html.
我的程序安装在Windows和Mac的正常位置.在Mac上,我的程序安装到/Users/username/Applications/MyProgram其中MyProgram是包含"MyProgram.app"和"文档"文件夹中的文件夹.
#ifdef Q_OS_MACX
docPath = executablePath + "/Doc/index.html";
#elif Q_OS_WIN
docPath = executablePath + "/Doc/index.html";
#endif
QDesktopServices::openUrl(QUrl::fromLocalFile(docPath));
Run Code Online (Sandbox Code Playgroud)
所以,我的最终问题是,应该executablePath是什么?此外,这假设用户可以在除默认位置之外的其他地方安装程序,或者可以从快捷方式启动程序.
我最近从10.6.8升级到10.8.2.我需要编译使用10.7 SDK的软件.但是,每当我进入/Developer/SDKs/所有我看到的是:MacOSX10.4u.sdk,MacOSX10.5.sdk和MacOSX10.6.sdk.我希望我至少拥有MacOSX10.7.sdk,但它不存在.我不确定这是否相关,但我正在使用Xcode 4.6.
任何人都知道如何获得更新的SDK或至少解释为什么我的遗失?
我使用了一些QML控制一样GroupBox,并CheckBox具有与之相关联的文本.文本的默认颜色为黑色.但是,我在深色背景上有这些项目,并且更喜欢使用白色作为文本颜色.这些项目没有颜色属性,所以我不知道该怎么做.
CheckBox {
text: "Check Me"
}
Run Code Online (Sandbox Code Playgroud) 我在 Python 3.7 中使用多处理来启动几个长时间运行的操作。每个单独的过程都需要几分钟才能完成。我想要同时显示正在运行的每个单独进程的进度条。我一直无法让它工作,因为进度条在我当前徒劳的尝试中不断跳跃并相互替换。
我这样创建我的流程:
with Pool(processes=cpu_count()) as pool:
return pool.starmap(_execute_long_running_process, items)
Run Code Online (Sandbox Code Playgroud)
_execute_long_running_process我的函数内部有一个for循环,我希望进度条跟踪它。
for i in tqdm(list_of_things_to_process, leave=False):
# do a thing
Run Code Online (Sandbox Code Playgroud)
我相信我的问题是由于每个tqdm进度条存在于与主流程分开的自己的流程中而产生的。我不确定有什么解决方法可以使它们按照我的预期运行,其中有几个进度条正在更新。
我发出信号然后用QML捕获; 但是,当我尝试读取附加到信号的参数时,我得到"未定义".以下是一些代码片段.谢谢你的帮助提前!
mymodel.h
class MyModel : public QObject
{
Q_OBJECT
...
signals:
void mySignal(float a, some::enum b)
...
}
Run Code Online (Sandbox Code Playgroud)
mymodel.cpp
做一些事情来发出信号(这不是问题,简单emit mySignal(1.0, 2.0);)
someotherclass.cpp
void SomeOtherClass :: setupQML(){...
QQuickView *view = new QQuickView();
QWidget *container = QWidget::createWindowContainer(view);
...
QmlRootData = new RootData();
view->rootContext()->setContextObject(QmlRootData);
view->rootContext()->setContextProperty("MyModel", model);
view->setSource(QUrl("main.qml"));
view->setResizeMode(QQuickView::SizeRootObjectToView);
QObject* rootObj = view->rootObject();
...
Run Code Online (Sandbox Code Playgroud)
}
main.qml
Rectangle {
Connections {
target: MyModel
onMySignal: console.log(a)
}
}
Run Code Online (Sandbox Code Playgroud)
上述内容console.log(a)在预期时被调用; 但是,我希望输出为"1.0",但它只是说"未定义",我不知道为什么.我正在使用Qt 5.1和Qt Quick 2.0.
我正在尝试创建一个自定义QQuickItem来在我的应用程序中显示图表。我的 C++ 版本可以工作,但我的 Python 版本无法工作。我相信这是因为Q_DECLARE_METATYPE和qRegisterMetaType没有移植到 PySide2。虽然我下面的示例没有演示这一点,但我的要求是饼图不是静态的(它可以随时更改),并且我可以拥有可以在运行时添加或删除的任意数量的饼图。
我的程序将运行,但它不显示任何内容,并且我在控制台上收到以下错误:
QMetaProperty::read: Unable to handle unregistered datatype 'QAbstractListModel*' for property 'CustomPieChart::model'
QMetaProperty::read: Unable to handle unregistered datatype 'QAbstractListModel*' for property 'CustomPieChart::model'
qrc:/PieChartView.qml:24:17: Unable to assign [undefined] to QAbstractItemModel*
Run Code Online (Sandbox Code Playgroud)
我的代码的精简版本如下:
主要.py
QMetaProperty::read: Unable to handle unregistered datatype 'QAbstractListModel*' for property 'CustomPieChart::model'
QMetaProperty::read: Unable to handle unregistered datatype 'QAbstractListModel*' for property 'CustomPieChart::model'
qrc:/PieChartView.qml:24:17: Unable to assign [undefined] to QAbstractItemModel*
Run Code Online (Sandbox Code Playgroud)
饼图模型.py
import sys
from PySide2.QtCore import QUrl
from PySide2.QtGui import QIcon …Run Code Online (Sandbox Code Playgroud) 我的目标是在运行时添加ChartView数量可变的QML LineSeries。LineSeries在用户选择并加载其中包含数据的文件之前,未知需要添加多少个。
我试图创建所有的LineSeries内部Repeater,没有运气。我怀疑这是因为ChartView不知道该怎么办Item。由于不适用于,因此无法直接进行Repeater创建:LineSeriesRepeaterQObject
Repeater {
model: numberOfColumnsInModel / 2
delegate: Item {
LineSeries {
id: lineSeries
axisX: xAxis
axisY: yAxis
VXYModelMapper {
id: modelMapper
model: lineChart.model //Reimplemented QAbstractTableModel
xColumn: index * 2
yColumn: index * 2 + 1
}
onHovered: {
console.log("Do something...");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我在线上看到的示例中,每个示例LineSeries都是硬编码的(对于其中的每一行一次),ChartView对我没有用。
我正在尝试制作一个使用 QML QCharts 来可视化数据的应用程序。该程序在启动时甚至在窗口出现之前就崩溃了。我在 macOS 和 Windows 10 上都进行了尝试,结果相同。我在下面提供了一个最低限度的工作示例。
main.py:
import sys
from PySide2.QtGui import QGuiApplication
from PySide2.QtQml import QQmlApplicationEngine
from PySide2.QtCore import QUrl
import qml_rc
if __name__ == "__main__":
app = QGuiApplication(sys.argv)
engine = QQmlApplicationEngine()
engine.load(QUrl("qrc:/main.qml"))
if not engine.rootObjects():
sys.exit(-1)
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
main.qml:
import QtQuick 2.13
import QtQuick.Controls 2.13
import QtCharts 2.13
ApplicationWindow {
visible: true
// Example taken from: https://doc.qt.io/qt-5/qtcharts-qmlchart-example.html
ChartView {
id: chart
title: "Top-5 car brand shares in Finland"
anchors.fill: parent
legend.alignment: Qt.AlignBottom
antialiasing: true …Run Code Online (Sandbox Code Playgroud) 我TableView在 PySide2 Qt 5.13.0 中创建了一个。我想要TableView填充父项的宽度,但除非我拖动表格,否则它不会调整列的大小。从程序开始,我希望列更宽。
主文件
import sys
from PySide2.QtCore import QUrl
from PySide2.QtQml import QQmlApplicationEngine, qmlRegisterType
from PySide2.QtWidgets import QApplication
from table_model import TableModel
import qml_rc # noqa: F401
if __name__ == "__main__":
app = QApplication(sys.argv)
engine = QQmlApplicationEngine()
qmlRegisterType(TableModel, "TableModel", 1, 0, "TableModel")
engine.load(QUrl("qrc:/main.qml"))
if not engine.rootObjects():
sys.exit(-1)
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
主文件
import QtQuick 2.13
import QtQuick.Controls 2.13
import TableModel 1.0
ApplicationWindow {
visible: true
Component.onCompleted: {
showMaximized()
}
TableView {
id: tableView
clip: true
anchors.fill: …Run Code Online (Sandbox Code Playgroud) 我有一个将成功执行的AJAX调用,但当它到达该done()部分时,它将打印出我的消息"SUCCESS",但不会更改按钮的类.
$(".btn").click(function () {
$.ajax({
method: "POST",
url: $(this).data("action"),
data: {
aId: $(this).data("a-id"),
bId: $(this).data("b-id"),
cId: $(this).data("c-id")
}
})
.done(function () {
console.log("SUCCESS");
$(this).removeClass("btn-default");
$(this).addClass("btn-success");
})
.fail(function (jqXHR, textStatus, errorThrown) {
alert("FAILURE");
$(this).removeClass("btn-default").addClass("btn-danger");
});
});
Run Code Online (Sandbox Code Playgroud)
我的猜测是,它与我没有给函数提供按钮的ID来处理这个事实有关,而是对任何被点击的具有"btn"类的东西采取行动.这个源自的页面有一长串按钮,这就是为什么他们没有ID,因为页面会给他们所有相同的ID.我想我可以在ID上附加一个数字,但我宁愿不这样做.它也没有解释为什么$(this)在检索值时在我的其余AJAX函数中起作用.
我有以下 Dockerfile:
FROM fedora:27
RUN xargs
Run Code Online (Sandbox Code Playgroud)
当我运行时,docker build -t test .我得到以下输出:
$ docker build -t test .
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM fedora:27
---> 7a2e85963474
Step 2/2 : RUN xargs
---> Running in fbe9bfbedfe0
/bin/sh: xargs: command not found
The command '/bin/sh -c xargs' returned a non-zero code: 127
Run Code Online (Sandbox Code Playgroud)
我希望 Fedoraxargs默认具有,但它似乎不可用。我还应该尝试什么?