这是我的示例代码:
class hoho : public QObject
{
Q_OBJECT
public:
hoho()
{
httpFetch = new HttpFetch(QUrl("http://www.google.com/"));
connect(httpFetch, SIGNAL(Fetched()), this, SLOT(PrintData(QByteArray)));
}
void PrintData(QByteArray http)
{
qDebug()<<http;
}
HttpFetch *httpFetch;
};
Run Code Online (Sandbox Code Playgroud)
当我尝试编译它时,弹出以下错误
1>main.cpp(15): error C2243: 'type cast' : conversion from 'HttpFetch *' to 'const QObject *' exists, but is inaccessible
Run Code Online (Sandbox Code Playgroud)
这个错误来自于派生类QObject(信号和插槽机制所必需的).
谁能告诉我如何解决这个问题?
是否有GTK或Qt的小部件可以让我画这样的股票图表?
http://smartquant.com/openquant/openquant_chart.jpg
(复制和网址粘贴由于盗链限制)
谢谢,乔尔
Qt4,QtCreator
我想在Widget中绘制:
void Widget::on_pushButton_clicked()
{
QPainter painter;
painter.begin(ui->label);
QRectF rectangle(10.0, 20.0, 80.0, 60.0);
int startAngle = 30 * 16;
int spanAngle = 120 * 16;
painter.drawArc(rectangle, startAngle, spanAngle);
painter.end();
}
Run Code Online (Sandbox Code Playgroud)
但是当我按下按钮时没有任何反应.
怎么做正确的方法?
我似乎无法将一个参数传递给一个插槽.如果我没有传递一个参数,那么函数会很好地滚动.如果我传递一个参数(整数),我编译时会得到错误"没有这样的名字类型"和"没有这样的插槽".
在我的标题中,我声明:
private slots:
void addButton(int);
signals:
void clicked(int)
Run Code Online (Sandbox Code Playgroud)
在我的Main.cpp中,我这样做:
int count;
int count = 0;
QPushButton* button = new QPushButton("Button");
_layout->addWidget(button);
connect(button, SIGNAL(clicked(count), this, SLOT(addButton(count)));
Run Code Online (Sandbox Code Playgroud)
....
void Main::addButton(int count) {
//do stuff with count
}
Run Code Online (Sandbox Code Playgroud) 我已经看到在QML中有一个Bezier曲线的示例实现,但我正在寻找一个如何实现虚线或点状贝塞尔曲线的提示.据我所知,Bezier曲线示例的作者QSGGeometryNode用于存储内部,QSGGeometry并QSGFlatColorMaterial在其上应用了材料.然后,他们只需创建点列表并在它们之间绘制段.
是否有可能写一个shader,并把它应用到QSGFlatColorMaterial(以显示线dashed,dotted等等)?
最终,是否可以存储多个QSGGeometry内部QSGGeometryNode?
UPDATE
我想在"纯QtQuick"中实现它- 而不是在"旧"接口(例如QPainter etc)中 - 因为我不想使用切换上下文(openGL和CPU)的东西.我更喜欢使用自定义着色器的解决方案(如果它可行) - 因为我将有更多的可能性来实现自定义外观(虚线,溺爱,彩色,可能是动画等).
如果不可能,我会用QPainter.
我有一个基于Qt5.4的程序和一些图像处理.我使用QCameramy videoSurface(派生自QAbstractVideoSurface)来获取VideoFrames.它在Windows上运行良好.
但现在我需要我的应用程序的Android版本.我发现QCamera在Android上不起作用.但我看到QML Camera示例在Android上运行没有任何问题.
所以我决定用QML重写我的应用程序.主要问题:我无法在C++中访问QML Camera表面.
void myVideoOutput::setSource(QObject *source)
{
qDebug() << Q_FUNC_INFO << source;
if (source == m_source.data())
return;
m_source = source;
if (m_source) {
const QMetaObject *metaObject = m_source.data()->metaObject();
QStringList properties;
for(int i = metaObject->propertyOffset(); i < metaObject >propertyCount(); ++i)
properties << QString::fromLatin1(metaObject->property(i).name());
qDebug() << properties;
}
.....
emit sourceChanged();
}
Run Code Online (Sandbox Code Playgroud)
此代码提供对属性的访问.但我无法以这种方式访问videoSurface(使用QCamera我可以做到).我想知道QML Camera是如何工作的?它是基于QCamera?我看QCamera *m_camera在QDeclarativeCamera...
所以我有两个问题:
我使用这一行在我的对话框中禁用了Qt中的X按钮:
myDialog->setWindowFlags(Qt::Dialog | Qt::Desktop)
Run Code Online (Sandbox Code Playgroud)
但我无法使用此代码检测到Alt+ F4:
void myClass::keyPressEvent(QKeyEvent *e)
{
if ((e->key()==Qt::Key_F4) && (e->modifiers()==Qt::AltModifier))
doSomething();
}
Run Code Online (Sandbox Code Playgroud)
我应该怎么做才能在Qt中检测Alt+ F4或禁用它?
我正在使用Qt.我通过Qt Creator在页面中添加了一个按钮.它与该方法相关联void MyPage::on_startButton_clicked().
我想以编程方式单击此按钮.我试过了ui->startButton->clicked(),它给了,
错误C2248:'QAbstractButton :: clicked':无法访问类'QAbstractButton'中声明的受保护成员
请帮忙.谢谢!
我在Windows 7中使用QtCreator.
我想将它配置为使用-O3c ++编译器的第三级优化().
我该怎么做才能加速我的代码以及需要进行哪些更改?
我正在使用该minted.sty包,它要求我-shell-escape在latex/xelatex编译期间使用该选项.我可以在控制台/终端上做到这一点.但是,我希望将此选项添加到TexShop中.我是Windows上WinEdit的先前用户,但最近已切换到Mac和TexShop,所以不知道该怎么做?
这是控制台输出:
Package ifplatform Warning:
shell escape is disabled, so I can only detect \ifwindows.
))
! Package minted Error: You must invoke LaTeX with the -shell-escape flag.
See the minted package documentation for explanation.
Type H <return> for immediate help.
...
l.54 \makeatletter
Run Code Online (Sandbox Code Playgroud)