到目前为止,我知道几种#include
Qt类的方法:
#include <QtModule>
例如QDomDocument
,这带来了特定模块的所有类QDomElement
,QDomNode
以及来自的许多其他类#include <QtXml>
.
#include <QClassName>
这增加了一个特定的类,可能想要使用,例如声明QEvent
,QStringList
,QFile
.
#include <qcstyleheader.h>
这具有前一方法的效果,除了不同的标题名称.
所以我想知道,#include
Qt课还有其他方法吗?它们是否相同,或者由于某些原因,它们中的一些是否优先于其他人?这取决于#include
内部.cpp
还是.h
文件?这会影响可执行文件的编译速度和大小吗?
简而言之,最好的方法是什么?
我知道Racket的stdlib,但我想自己实现一个排序功能作为练习.我决定使用合并排序算法,因为它在递归术语中自然定义.很快我就提出了工作代码,但它运行得太慢了.在我看来,运行时间是列表大小的指数,虽然理论上它应该是O(n·log n)
.
这是我的代码:
#lang racket(define (pair x y) (list x y))
(define (split input) (cond [(empty? input) (pair null null)] [(empty? (rest input)) (pair input null)] [else (let [(tail (cddr input))] (pair (cons (first input) (first (split tail))) (cons (second input) (second (split tail)))))]))
(define (merge input1 input2) (if (ormap empty? (list input1 input2)) (append input1 input2) (if (< (first input1) (first input2)) (cons (first input1) (merge (rest input1) input2)) (cons (first input2) …
我们用来显示图片的Widget是QLabel.我们可以通过设置pixmap属性直接从QtCreator中完成.
我们应该首先创建一个资源文件,然后将该图像添加到该资源文件中.要创建Qt资源文件,我们转到菜单:File> Qt> Qt Resource File.
我们可以使用Qt Creator设置QLabel的图像...
但我想根据用户的一些输入改变图片
我试着做以下事情:
#include "form1.h"
#include "form.h"
#include "ui_form.h"
#include "ui_form1.h"
Form::Form(QWidget *parent) :
QWidget(parent),
ui(new Ui::Form)
{
ui->setupUi(this);
QPixmap * mypix = new QPixmap(":/karim/test.png");
ui->label->setPixmap(mypix);
delete mypix;
}
Run Code Online (Sandbox Code Playgroud)
但我得到了这个错误
..\Project\form.cpp: In constructor 'Form::Form(QWidget*)':
..\Project\form.cpp:12: error: no matching function for call to 'QLabel::setPixmap(QPixmap*&)'
c:\QtSDK\Simulator\Qt\mingw\include/QtGui/qlabel.h:123: note: candidates are: void QLabel::setPixmap(const QPixmap&)
Run Code Online (Sandbox Code Playgroud)
可能是什么问题呢 ?
我正在使用VC++ 2008,我的代码是:
#include <gtk/gtk.h>
int main( int argc, char *argv[])
{
GtkWidget *window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
gtk_main();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在每个编译器中我得到相同的错误:gio/gio.h:没有这样的文件或目录.
我添加了这个库:gtk-win32-2.0.lib gdk-win32-2.0.lib gailutil.lib
我还可以做些什么?
编辑:我添加了包括和箱子.错误发生在gdkapplaunchcontext.h>第30行> #include
我在考虑数据类型范围,出现了一个问题.我们知道签名char的范围是从-128到127.我得到了127的结果,即0111111 = +127
但我无法得到-128如何来?如果我们只是ON符号位,我们得到11111111,它是如何等于-128?
这张照片说明了我的困境:
所有字符看起来都一样大小,但是在RichEdit控件中显示时,与我使用ExtTextOut时相比,它们之间的间距是不同的。
我想呈现与RichEdit控件中相同的字符(理想情况下),以保留换行位置。
谁能告诉我:
a)哪个更正确的表示形式?
b)为什么RichEdit控件显示的文本在亚洲字符之间没有空格?
c)有什么方法可以使ExtTextOut在绘制这些字符时重现RichEdit控件的行为?
d)如果我正在使用亚洲版本的Windows,这会有什么不同吗?
也许我很乐观,但是如果有人可以提供任何提示,我将非常感兴趣。
如果有帮助:
这是我的文字:
???????????1 2 3 4 5 6 7 8 9 0
Run Code Online (Sandbox Code Playgroud)
向亚洲读者表示歉意,这只是为了测试我们的Unicode实现,我什至不知道字符取自哪种语言,更不用说它们是否意味着任何意义了
为了通过将这些字符粘贴到RichEdit控件(例如,写字板)中来查看效果,您可能会发现必须滑动它们并将字体设置为“ Arial”。
我获得的富文本为:
{\ rtf1 \ ansi \ ansicpg1252 \ deff0 \ deflang2057 {\ fonttbl {\ f0 \ fnil \ fcharset0 Arial;}} {\ colortbl; \ red0 \ green0 \ blue0;} \ viewkind4 \ uc1 \ pard \ sa200 \ sl276 \ slmult1 \ lang9 \ fs22 \ u24555?\ u30340?\ u26837?\ u33394?\ u29392?\ u29432?\ u36339?\ …
我正在编写一个带有类似Python的内置语言的工具.我想在语法中使缩进有意义(因此行开头的制表符和空格将表示命令的嵌套).
做这个的最好方式是什么?
我以前写过递归下降和有限自动机解析器.
所以我有这个代码:
class ConstTest {
public:
explicit ConstTest(char* name) {}
};
int main() {
ConstTest t("blarghgh");
}
Run Code Online (Sandbox Code Playgroud)
它显然是编译,即使我认为它不应该.由于C++中的字符串文字具有类型const char[]
,而ConstTest
构造函数需要const-less char*
- not const char*
.并且const
通过C++隐式地执行指向非常量指针的指针.
那么,我哪里错了?为什么要编译?我可以合法地修改构造函数中的解除引用指针吗?!
我正在尝试使用 Haskell 解析一些 XML 文件。对于这项工作,我使用HXT来获取有关实际应用中箭头的一些知识。所以我对箭头主题很陌生。
在 XPath (和HaXml)中,可以按位置选择节点,例如:/root/a[2]/b
即使在一遍又一遍地阅读文档之后,我也无法弄清楚如何使用 HXT 做类似的事情。
这是我正在使用的一些示例代码:
module Main where
import Text.XML.HXT.Core
testXml :: String
testXml = unlines
[ "<?xml version=\"1.0\"?>"
, "<root>"
, " <a>"
, " <b>first element</b>"
, " <b>second element</b>"
, " </a>"
, " <a>"
, " <b>third element</b>"
, " </a>"
, " <a>"
, " <b>fourth element</b>"
, " <b>enough...</b>"
, " </a>"
, "</root>"
]
selector :: ArrowXml a => a XmlTree …
Run Code Online (Sandbox Code Playgroud) 让我们看看代码片段:
pSegmentBegin p i = pIndentExact i *> ((:) <$> p i <*> ((pEOL *> pSegment p i) <|> pure []))
Run Code Online (Sandbox Code Playgroud)
如果我在我的解析器中将此代码更改为:
pSegmentBegin p i = do
pIndentExact i
((:) <$> p i <*> ((pEOL *> pSegment p i) <|> pure []))
Run Code Online (Sandbox Code Playgroud)
我有一个错误:
canot compute minmal length of a parser due to occurrence of a moadic bind, use addLength to override
Run Code Online (Sandbox Code Playgroud)
我认为上面的解析器应该以相同的方式运行.为什么会出现此错误?
编辑
上面的例子很简单(为了简化问题),如下所述,这里没有必要使用do notation,但我希望它使用的实际情况如下:
pSegmentBegin p i = do
j <- pIndentAtLast i
(:) <$> p j <*> ((pEOL …
Run Code Online (Sandbox Code Playgroud)