无标题

Posted 「已注销」

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无标题相关的知识,希望对你有一定的参考价值。

目录

什么是Substrate?
安装 Rust 和 Rust 工具链
使用节点模板准备一个 Substrate 节点
安装前端模板
启动本地 Substrate 节点
启动前端模板
将资金从一个帐户转移到另一个帐户
停止本地节点

• 什么是Substrate?

Substrate 是一个用于构建区块链的开源、模块化和可扩展框架。

Substrate 的设计从一开始就具有灵活性,并允许创新者设计和构建满足其需求的区块链网络。它提供了构建自定义区块链节点所需的所有核心组件。

为了帮助您入门,Substrate 开发者中心提供了一个开箱即用的基于 Substrate 的节点模板。无需进行任何更改,您就可以使用此节点模板创建具有一些预定义用户帐户和资金的工作区块链网络。

• 安装 Rust 和 Rust 工具链

手动安装和配置 Rust:

  1. rustup通过运行以下命令进行安装:
curl https://sh.rustup.rs -sSf | sh
  1. bin通过运行以下命令,配置当前 shell 以重新加载 PATH 环境变量,使其包含 Cargo目录:
source ~/.cargo/env
  1. stable通过运行以下命令将 Rust 工具链配置为默认为最新版本:
rustup default stable
rustup update
  1. 通过运行以下命令添加nightly版本和nightlyWebAssembly ( ) 目标:wasm
rustup update nightly
rustup target add wasm32-unknown-unknown --toolchain nightly
  1. 通过运行以下命令来验证您的安装:
rustc --version
rustup show

前面的步骤将引导您完成 Rust 和 Rust 工具链的安装和配置,以便您自己看到完整的过程。

• 使用节点模板准备一个 Substrate 节点

这基板节点模板 提供了一个工作开发环境,以便您可以立即开始在 Substrate 上构建。

编译 Substrate 节点模板:

  1. latest通过运行以下命令,使用版本分支克隆节点模板存储库:
git clone https://github.com/substrate-developer-hub/substrate-node-template
  1. 通过运行以下命令切换到节点模板目录的根目录:
cd substrate-node-template
git checkout latest
  1. 通过运行以下命令编译节点模板:
cargo build --release

您应该始终使用该–release标志来构建优化的工件。

• 安装前端模板

  1. 通过运行以下命令克隆前端模板存储库:
git clone https://github.com/substrate-developer-hub/substrate-front-end-template
  1. 通过运行以下命令切换到前端模板目录的根目录:
cd substrate-front-end-template
git checkout latest
  1. 通过运行以下命令安装前端模板的依赖项:
yarn install

• 启动本地 Substrate 节点

  1. 切换到编译 Substrate 节点模板的根目录。
    通过运行以下命令以开发模式启动节点:
./target/release/node-template --dev
  1. 通过查看终端中显示的输出来验证您的节点是否已启动并成功运行。

终端应显示类似于此的输出:

如果之后的数字在finalized增加,则您的区块链正在生成新块并就它们所描述的状态达成共识。

我们将在后面的教程中查看日志输出中报告的详细信息。目前,只需要知道您的节点正在运行并生成块即可。

  1. 保持显示节点输出的终端打开以继续。

• 启动前端模板

Substrate 前端模板由用户界面组件组成,使您能够与 Substrate 节点交互并执行一些常见任务。

要使用前端模板:

  1. 在您的计算机上打开一个新的终端 shell,切换到安装前端模板的根目录。

  2. 通过运行以下命令启动前端模板:

yarn start
  1. 在浏览器中打开http://localhost:8000查看前端模板。

顶部有一个账户选择列表,用于在您想要执行链上操作时选择要使用的账户。模板的顶部还显示有关您连接到的链的信息。

• 将资金从一个帐户转移到另一个帐户

既然您在本地计算机上运行了一个区块链节点,并且您有一个可用于执行链上操作的前端模板,那么您就可以探索与区块链交互的不同方式了。

默认情况下,前端模板包含多个组件,可让您尝试不同的常见任务。对于本教程,您可以执行简单的转账操作,将资金从一个账户转移到另一个账户。

将资金转入账户:

• 停止本地节点

传输成功后,您可以继续探索前端模板组件或停止本地 Substrate 节点。因为您–dev在启动节点时指定了该选项,所以停止本地节点会停止区块链并清除所有持久块数据,以便您下次启动节点时可以以干净的状态开始。

停止本地 Substrate 节点:

  1. 返回到显示节点输出的终端 shell。

  2. 按 Control-c 终止正在运行的进程。

  3. 验证您的终端返回到substrate-node-template目录中的终端提示符。

Qt 无标题无边框程序的拖动和改变大小

最近做项目遇到的问题,总结下。

有时候我们觉得系统的标题栏和按钮太丑太呆板,想做自己的标题栏以及最大化、最小化、关闭,菜单按钮,我们就需要 

 

[cpp] view plain copy
 
  1. setWindowFlags(Qt::FramelessWindowHint);  

但是这样过后,我们就不能拖动窗口改变位置,以及拖动边缘改变窗口大小了。

 

有两种方案处理这种情况:

1.自己对mouseMoveEvent,mousePressEvent,mouseReleaseEvent 等事件进行处理。

2.Qt可以处理windows的消息。大家重新实现bool winEvent(MSG *message, long *result);(在此又一次感觉Qt的NB)

 

我刚开始使用第一种方法去实现的。移动窗口很容易做,大家可以去看看这个大大写的,比网上其他版本问题少些。

http://blog.csdn.net/aqtata/article/details/8902889

在窗口边缘按下鼠标拖动改变窗口大小就比较麻烦了。

我是这样做的:

在mousePressEvent 按下设置m_bPressed为真。

在mouseMoveEvent中m_bPressed为真且event->x() 在窗口边缘 及处理算出鼠标移动的增量 然后不断resize窗口。

至于如何为边缘的断定,就自己设定一个 差值 假如 在窗口边缘 ±4个px 就算在在该边缘就处理该resize。

这样做缺点很多,1.拖快了不行,很容易超过该差值 , 2.窗口抖动的厉害,一直在resize,3.要处理太多情况

 

鉴于上诉缺点于是乎就到处问人百度google。有了第二种方法:

第二种方法很好用,效果和有标题边框程序一样~~~

Qt居然可以处理windows消息。。

这里我们要重新实现winEvent ( MSG * message, long * result ) 

该虚函数在QWidget和QWizard以及QSizeGrip以及他们的子类中都可以实现。

如果你想停止Qt处理消息就返回true,并且设置result到你想要保存的值返回给window处理。否者的话返回false。

这里我们主要想处理WM_NCHITTEST消息。

 

The WM_NCHITTEST message is sent to a window in order to determine what part of the window corresponds to a particular screen coordinate. This can happen, for example, when the cursor moves, when a mouse button is pressed or released, or in response to a call to a function such as WindowFromPoint. If the mouse is not captured, the message is sent to the window beneath the cursor. Otherwise, the message is sent to the window that has captured the mouse.

A window receives this message through its WindowProc function. 

WM_NCHITTEST的消息响应函数会根据鼠标当前的坐标来判断鼠标命中了窗口的哪个部位,消息响应函数的返回值指出了部位,例如它可能会返回HTCAPTION,或者HTCLIENT等。(其返回值有很多,请查阅MSDN)。

知道这个就好了,我们还是要判断下鼠标的位置,然后通过该位置保存到result给window处理。

其实就是我们的程序没有边框不能发送这些消息,我们把它告诉windows,然后windows帮我们处理拖动,改变大小等效果。所以效果和有边框有标题程序效果一样的。

头文件申明:

 

[cpp] view plain copy
 
  1. class MainWindow : public QMainWindow  
  2. {  
  3.     Q_OBJECT  
  4. public:  
  5.     MainWindow(QWidget *parent = 0);  
  6.     ~MainWindow();  
  7.   
  8. protected:  
  9.     bool winEvent(MSG *message, long *result);  
  10. };  

CPP实现

 

 

[cpp] view plain copy
 
  1. bool MainWindow::winEvent(MSG *message, long *result)  
  2. {  
  3.     switch(message->message)  
  4.     {  
  5.     case WM_NCHITTEST:  
  6.         int xPos = GET_X_LPARAM(message->lParam) - this->frameGeometry().x();  
  7.         int yPos = GET_Y_LPARAM(message->lParam) - this->frameGeometry().y();  
  8.         if(this->childAt(xPos,yPos) == 0)  
  9.         {  
  10.             *result = HTCAPTION;  
  11.         }else{  
  12.             return false;  
  13.         }  
  14.         if(xPos > 18 && xPos < 22)  
  15.             *result = HTLEFT;  
  16.         if(xPos > (this->width() - 22) && xPos < (this->width() - 18))  
  17.             *result = HTRIGHT;  
  18.         if(yPos > 18 && yPos < 22)  
  19.             *result = HTTOP;  
  20.         if(yPos > (this->height() - 22) && yPos < (this->height() - 18))  
  21.             *result = HTBOTTOM;  
  22.         if(xPos > 18 && xPos < 22 && yPos > 18 && yPos < 22)  
  23.             *result = HTTOPLEFT;  
  24.         if(xPos > (this->width() - 22) && xPos < (this->width() - 18) && yPos > 18 && yPos < 22)  
  25.             *result = HTTOPRIGHT;  
  26.         if(xPos > 18 && xPos < 22 && yPos > (this->height() - 22) && yPos < (this->height() - 18))  
  27.             *result = HTBOTTOMLEFT;  
  28.         if(xPos > (this->width() - 22) && xPos < (this->width() - 18) && yPos > (this->height() - 22) && yPos < (this->height() - 18))  
  29.             *result = HTBOTTOMRIGHT;  
  30.   
  31.         return true;  
  32.     }  
  33.     return false;  
  34. }  

 

把各种边界情况保存到result给windows处理,我们就省去很多事情,我想windows肯定比我们自己实现的效果要好多了。

以上的18 以及 22 是我对程序的边缘进行判断的范围。

因为

我做了边框阴影。阴影边框设定为20px所以在

[cpp] view plain copy
 
  1. xPos > 18 && xPos < 22 其实就是我们假定的边框了。  
[cpp] view plain copy
 
  1.   



地址:http://download.csdn.net/detail/kfbyj/5810151

https://blog.csdn.net/kfbyj/article/details/9284923

以上是关于无标题的主要内容,如果未能解决你的问题,请参考以下文章

Paxos获SEC无行动异议函,可提供区块链股票结算服务

学习Hyperledger Fabric 实战联盟链 实战高清无密

终于把区块链与物流的关联搞清楚了 区块链的分类 物流业中区块链技术应用的案例

区块链学姐:9月16日以太坊马上重回1400大关,多头已无能量?

区块链学姐:9月16日以太坊马上重回1400大关,多头已无能量?

区块链