我是Qt的新手.
我正在构建一个控制台应用程序,我需要处理许多真实世界的HTML页面.QtWebkit是一个简单的选择,因为它有明确的API和易用性.
我检查了文档,他们说我可以使用QWebView :: load()加载页面.但我正在构建一个控制台应用程序,我无法使用小部件.我得到的错误是:?
QWidget: Cannot create a QWidget when no GUI is being used
The program has unexpectedly finished.
Run Code Online (Sandbox Code Playgroud)
那么如何在控制台应用程序中使用QtWebkit处理html页面.
这是代码(也在http://pastebin.com/yw5z2hnG):
#include <iostream>
#include <vector>
using namespace std;
class X
{
public:
int i;
X();
~X();
};
X::X()
{
i = 1;
cout << "---constructor" << '\n';
}
X::~X()
{
cout << "***desctructor" << '\n';
}
int main()
{
vector<X> *vx = new vector<X>;
cout << "------------------------------------" << endl;
vx->push_back(X());
vx->push_back(X());
vx->push_back(X());
vx->push_back(X());
vx->push_back(X());
cout << "------------------------------------" << endl;
delete vx;
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出为:
------------------------------------
---constructor
***desctructor
---constructor
***desctructor
***desctructor
---constructor
***desctructor
***desctructor
***desctructor
---constructor
***desctructor
---constructor
***desctructor
***desctructor …
Run Code Online (Sandbox Code Playgroud) 我很久以来一直在编码,但我从未使用过像CVS或SVN这样的代码管理系统.
能否请您建议任何从基础开始的指南,然后再考虑各个软件的概念及其复杂性.
我正在使用openCV python绑定.我试图使用以下列表显示输出图像:
cv.NamedWindow('display')
cv.MoveWindow('display', 10, 10)
cv.ShowImage('display', cvImage)
Run Code Online (Sandbox Code Playgroud)
但我没有看到任何窗口.
我的平台是Linux(openSuse 11.4),python-opencv 2.1和python 2.7.
我正在使用python-openCV.使用Sobel边缘检测时,我得到以下断言错误:
src.size() == dst.size() && src.channels() == dst.channels() && ((src.depth() == CV_8U && (dst.depth() == CV_16S || dst.depth() == CV_32F)) || (src.depth() == CV_32F && dst.depth() == CV_32F))
Run Code Online (Sandbox Code Playgroud)
我创建dest
使用CreateImage()
它,它具有相同的大小和通道src
.src和dest的深度也是IPL_DEPTH_8U.我也尝试使用加载图像,LoadImageM()
以便常量是实物,CV_*
但没有帮助.
我也碰巧发现那IPL_DEPTH_8U == CV_8U
是false
.
我正在使用 JDB 远程调试程序。我可以在 JDB 中编写脚本,以便可以编写循环和 if-else 条件来控制 JDB 如何执行并将 jdb 输出记录到文件中。
我的参考文档是GDB Scripting。
我有一个4x4网格,我想将箭头键按下与网格中项目的移动相关联.怎么做到这一点?
这是一个QML示例:
import QtQuick 1.1
Rectangle {
id: main;
width: 500; height: 500;
color: "darkgreen";
property int emptyBlock: 16;
Grid {
id: grid16;
x: 5; y: 5;
width: 490; height: 490;
rows: 4; columns: 4; spacing: 5;
Repeater {
model: 1;
Rectangle {
width: 118; height: 118; color: "darkblue";
}
}
}
Keys.onRightPressed: pressRight();
function pressRight() {
console.log("Left key pressed");
}
focus: true;
}
Run Code Online (Sandbox Code Playgroud)
更新1:感谢sebasgo和alexisdm的答案.如果在网格内移动并不那么容易,为什么我们有move
过渡属性[http://qt-project.org/doc/qt-4.8/qml-grid.html#move-prop]
在以下代码中:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;
using System.Diagnostics;
namespace Test
{
class Program
{
static void Main(string[] args)
{
string javaProcWql = string.Format("SELECT ProcessId, Name, CommandLine FROM Win32_Process WHERE Name = '{0}' AND CommandLine LIKE '%{1}%'", "firefox.exe", "firefox");
ManagementObjectSearcher mos = new ManagementObjectSearcher(javaProcWql);
foreach (ManagementObject mo in mos.Get())
{
Console.WriteLine(mo["ProcessId"]);
string[] userinfo = new string[2];
mo.InvokeMethod("GetOwner", (object[])userinfo);
Console.WriteLine("ha ha --> " + userinfo[1] + "\\" + userinfo[0]);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我得到InvalidOperationException
了消息以及异常是
"由于对象的当前状态,操作无效" …
以下代码中结构体Counter
包装了u32
. 我正在使用Arc
包装并Mutex
允许对值进行安全和共享的访问。我省略了线程代码以提供一个简单的示例:
use std::sync::{Arc, Mutex};
fn main() {
#[derive(Debug)]
struct Counter {
count: u32,
}
let counter = Arc::new(Mutex::new(Counter { count: 0 }));
for _ in 0..10 {
let mut c_int = counter.lock().unwrap();
c_int.count += 1;
}
println!("{:?}", counter.lock().unwrap());
}
Run Code Online (Sandbox Code Playgroud)
这里counter.lock().unwrap()
能够透明地锁定互斥锁并解开结果,我不需要取消引用Arc
. 还c_int
透明地取消对作品的引用。
考虑以下代码,其中Counter
替换为u32
:
use std::sync::{Arc, Mutex};
fn main() {
let counter = Arc::new(Mutex::new(32));
for _ in 0..10 {
let mut c_int = …
Run Code Online (Sandbox Code Playgroud) 我创建了一个新的 Cargo 项目:cargo new --lib hyphen-crate
.
源代码/库.rs
pub fn add(a: u32, b: u32) -> u32 {
a + b
}
Run Code Online (Sandbox Code Playgroud)
测试/添加.rs
use hyphen_crate::add;
#[test]
fn addition_test() {
assert_eq!(5, add(2, 3));
}
Run Code Online (Sandbox Code Playgroud)
Cargo.toml
[package]
name = "hyphen-crate"
version = "0.1.0"
authors = ["xolve"]
edition = "2018"
[dependencies]
Run Code Online (Sandbox Code Playgroud)
我搜索并看到了许多讨论,是否应该在板条箱或包的名称中允许使用连字符,但没有链接提到解决方案。
我看到的是,板条箱名称hyphen-crate
会自动转换为hyphen_crate
并成功编译和测试。