mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-22 15:04:44 +01:00
Improve gui/src/qt README.md
The current readme is a little bit outdated and contains some grammatical mistakes. This commit updates the doc so that: - It is easier to follow and is more informative - Fixes grammatical mistakes - Modernizes the Qt Creater setup instructions - Adds UNIX instructions for Qt Creator setup
This commit is contained in:
parent
f5cdc290d5
commit
5d1f260713
1 changed files with 75 additions and 46 deletions
121
src/qt/README.md
121
src/qt/README.md
|
@ -1,10 +1,12 @@
|
||||||
This directory contains the BitcoinQT graphical user interface (GUI). It uses the cross-platform framework [Qt](https://www1.qt.io/developers/).
|
This directory contains the source code for the Bitcoin Core graphical user interface (GUI). It uses the [Qt](https://www1.qt.io/developers/) cross-platform framework.
|
||||||
|
|
||||||
The current precise version for Qt 5 is specified in [qt.mk](/depends/packages/qt.mk).
|
The current precise version for Qt 5 is specified in [qt.mk](/depends/packages/qt.mk).
|
||||||
|
|
||||||
## Compile and run
|
## Compile and run
|
||||||
|
|
||||||
See build instructions ([macOS](/doc/build-osx.md), [Windows](/doc/build-windows.md), [Unix](/doc/build-unix.md), etc).
|
See build instructions: [Unix](/doc/build-unix.md), [macOS](/doc/build-osx.md), [Windows](/doc/build-windows.md), [FreeBSD](/doc/build-freebsd.md), [NetBSD](/doc/build-netbsd.md), [OpenBSD](/doc/build-openbsd.md)
|
||||||
|
|
||||||
|
When following your systems build instructions, make sure to install the `Qt` dependencies.
|
||||||
|
|
||||||
To run:
|
To run:
|
||||||
|
|
||||||
|
@ -12,84 +14,111 @@ To run:
|
||||||
./src/qt/bitcoin-qt
|
./src/qt/bitcoin-qt
|
||||||
```
|
```
|
||||||
|
|
||||||
## Files and directories
|
## Files and Directories
|
||||||
|
|
||||||
### forms
|
#### forms/
|
||||||
|
|
||||||
Contains [Designer UI](https://doc.qt.io/qt-5.9/designer-using-a-ui-file.html) files. They are created with [Qt Creator](#using-qt-creator-as-ide), but can be edited using any text editor.
|
- A directory that contains [Designer UI](https://doc.qt.io/qt-5.9/designer-using-a-ui-file.html) files. These files specify the characteristics of form elements in XML. Qt UI files can be edited with [Qt Creator](#using-qt-creator-as-ide) or using any text editor.
|
||||||
|
|
||||||
### locale
|
#### locale/
|
||||||
|
|
||||||
Contains translations. They are periodically updated. The process is described [here](/doc/translation_process.md).
|
- Contains translations. They are periodically updated and an effort is made to support as many languages as possible. The process of contributing translations is described in [doc/translation_process.md](/doc/translation_process.md).
|
||||||
|
|
||||||
### res
|
#### res/
|
||||||
|
|
||||||
Resources such as the icon.
|
- Contains graphical resources used to enhance the UI experience.
|
||||||
|
|
||||||
### test
|
#### test/
|
||||||
|
|
||||||
Tests.
|
- Functional tests used to ensure proper functionality of the GUI. Significant changes to the GUI code normally require new or updated tests.
|
||||||
|
|
||||||
### bitcoingui.(h/cpp)
|
#### bitcoingui.(h/cpp)
|
||||||
|
|
||||||
Represents the main window of the Bitcoin UI.
|
- Represents the main window of the Bitcoin UI.
|
||||||
|
|
||||||
### \*model.(h/cpp)
|
#### \*model.(h/cpp)
|
||||||
|
|
||||||
The model. When it has a corresponding controller, it generally inherits from [QAbstractTableModel](https://doc.qt.io/qt-5/qabstracttablemodel.html). Models that are used by controllers as helpers inherit from other Qt classes like [QValidator](https://doc.qt.io/qt-5/qvalidator.html).
|
- The model. When it has a corresponding controller, it generally inherits from [QAbstractTableModel](https://doc.qt.io/qt-5/qabstracttablemodel.html). Models that are used by controllers as helpers inherit from other Qt classes like [QValidator](https://doc.qt.io/qt-5/qvalidator.html).
|
||||||
|
- ClientModel is used by the main application `bitcoingui` and several models like `peertablemodel`.
|
||||||
|
|
||||||
ClientModel is used by the main application `bitcoingui` and several models like `peertablemodel`.
|
#### \*page.(h/cpp)
|
||||||
|
|
||||||
### \*page.(h/cpp)
|
- A controller. `:NAMEpage.cpp` generally includes `:NAMEmodel.h` and `forms/:NAME.page.ui` with a similar `:NAME`.
|
||||||
|
|
||||||
A controller. `:NAMEpage.cpp` generally includes `:NAMEmodel.h` and `forms/:NAME.page.ui` with a similar `:NAME`.
|
#### \*dialog.(h/cpp)
|
||||||
|
|
||||||
### \*dialog.(h/cpp)
|
- Various dialogs, e.g. to open a URL. Inherit from [QDialog](https://doc.qt.io/qt-5/qdialog.html).
|
||||||
|
|
||||||
Various dialogs, e.g. to open a URL. Inherit from [QDialog](https://doc.qt.io/qt-5/qdialog.html).
|
#### paymentserver.(h/cpp)
|
||||||
|
|
||||||
### paymentserver.(h/cpp)
|
- (Deprecated) Used to process BIP21 payment URI requests. Also handles URI-based application switching (e.g. when following a bitcoin:... link from a browser).
|
||||||
|
|
||||||
Used to process BIP21 payment URI requests. Also handles URI based application switching (e.g. when following a bitcoin:... link from a browser).
|
#### walletview.(h/cpp)
|
||||||
|
|
||||||
### walletview.(h/cpp)
|
- Represents the view to a single wallet.
|
||||||
|
|
||||||
Represents the view to a single wallet.
|
#### Other .h/cpp files
|
||||||
|
|
||||||
### Other .h/cpp files
|
|
||||||
|
|
||||||
* UI elements like BitcoinAmountField, which inherit from QWidget.
|
* UI elements like BitcoinAmountField, which inherit from QWidget.
|
||||||
* `bitcoinstrings.cpp`: automatically generated
|
* `bitcoinstrings.cpp`: automatically generated
|
||||||
* `bitcoinunits.(h/cpp)`: BTC / mBTC / etc handling
|
* `bitcoinunits.(h/cpp)`: BTC / mBTC / etc. handling
|
||||||
* `callback.h`
|
* `callback.h`
|
||||||
* `guiconstants.h`: UI colors, app name, etc
|
* `guiconstants.h`: UI colors, app name, etc.
|
||||||
* `guiutil.h`: several helper functions
|
* `guiutil.h`: several helper functions
|
||||||
* `macdockiconhandler.(h/mm)`: macOS dock icon handler
|
* `macdockiconhandler.(h/mm)`: macOS dock icon handler
|
||||||
* `macnotificationhandler.(h/mm)`: display notifications in macOS
|
* `macnotificationhandler.(h/mm)`: display notifications in macOS
|
||||||
|
|
||||||
## Contribute
|
## Contribute
|
||||||
|
|
||||||
See [CONTRIBUTING.md](/CONTRIBUTING.md) for general guidelines. Specifically for Qt:
|
See [CONTRIBUTING.md](/CONTRIBUTING.md) for general guidelines.
|
||||||
|
|
||||||
* don't change `local/bitcoin_en.ts`; this happens [automatically](/doc/translation_process.md#writing-code-with-translations)
|
**Note:** Do not change `local/bitcoin_en.ts`. It is updated [automatically](/doc/translation_process.md#writing-code-with-translations).
|
||||||
|
|
||||||
## Using Qt Creator as IDE
|
## Using Qt Creator as an IDE
|
||||||
|
|
||||||
You can use Qt Creator as an IDE. This is especially useful if you want to change
|
[Qt Creator](https://www.qt.io/product/development-tools) is a powerful tool which packages a UI designer tool (Qt Designer) and a C++ IDE into one application. This is especially useful if you want to change the UI layout.
|
||||||
the UI layout.
|
|
||||||
|
|
||||||
Download and install the community edition of [Qt Creator](https://www.qt.io/download/).
|
#### Download Qt Creator
|
||||||
Uncheck everything except Qt Creator during the installation process.
|
|
||||||
|
|
||||||
Instructions for macOS:
|
On Unix and macOS, Qt Creator can be installed through your package manager. Alternatively, you can download a binary from the [Qt Website](https://www.qt.io/download/).
|
||||||
|
|
||||||
1. Make sure you installed everything through Homebrew mentioned in the [macOS build instructions](/doc/build-osx.md)
|
**Note:** If installing from a binary grabbed from the Qt Website: During the installation process, uncheck everything except for `Qt Creator`.
|
||||||
2. Use `./configure` with the `--enable-debug` flag
|
|
||||||
3. In Qt Creator do "New Project" -> Import Project -> Import Existing Project
|
##### macOS
|
||||||
4. Enter "bitcoin-qt" as project name, enter src/qt as location
|
|
||||||
5. Leave the file selection as it is
|
```sh
|
||||||
6. Confirm the "summary page"
|
brew install qt-creator
|
||||||
7. In the "Projects" tab select "Manage Kits..."
|
```
|
||||||
8. Select the default "Desktop" kit and select "Clang (x86 64bit in /usr/bin)" as compiler
|
|
||||||
9. Select LLDB as debugger (you might need to set the path to your installation)
|
##### Ubuntu & Debian
|
||||||
10. Start debugging with Qt Creator (you might need to the executable to "bitcoin-qt" under "Run", which is where you can also add command line arguments)
|
|
||||||
|
```sh
|
||||||
|
sudo apt-get install qtcreator
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Setup Qt Creator
|
||||||
|
|
||||||
|
1. Make sure you've installed all dependencies specified in your systems build instructions
|
||||||
|
2. Follow the compile instructions for your system, run `./configure` with the `--enable-debug` flag
|
||||||
|
3. Start Qt Creator. At the start page, do: `New` -> `Import Project` -> `Import Existing Project`
|
||||||
|
4. Enter `bitcoin-qt` as the Project Name and enter the absolute path to `src/qt` as Location
|
||||||
|
5. Check over the file selection, you may need to select the `forms` directory (necessary if you intend to edit *.ui files)
|
||||||
|
6. Confirm the `Summary` page
|
||||||
|
7. In the `Projects` tab, select `Manage Kits...`
|
||||||
|
|
||||||
|
**macOS**
|
||||||
|
- Under `Kits`: select the default "Desktop" kit
|
||||||
|
- Under `Compilers`: select `"Clang (x86 64bit in /usr/bin)"`
|
||||||
|
- Under `Debuggers`: select `"LLDB"` as debugger (you might need to set the path to your LLDB installation)
|
||||||
|
|
||||||
|
**Ubuntu & Debian**
|
||||||
|
|
||||||
|
Note: Some of these options may already be set
|
||||||
|
|
||||||
|
- Under `Kits`: select the default "Desktop" kit
|
||||||
|
- Under `Compilers`: select `"GCC (x86 64bit in /usr/bin)"`
|
||||||
|
- Under `Debuggers`: select `"GDB"` as debugger
|
||||||
|
|
||||||
|
8. While in the `Projects` tab, ensure that you have the `bitcoin-qt` executable specified under `Run`
|
||||||
|
- If the executable is not specified: click `"Choose..."`, navigate to `src/qt`, and select `bitcoin-qt`
|
||||||
|
9. You're all set! Start developing, building, and debugging the Bitcoin Core GUI
|
||||||
|
|
Loading…
Add table
Reference in a new issue