You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bitcoin/src/qt
Ava Chow 0c3a3c9394
Merge bitcoin/bitcoin#29623: Simplify network-adjusted time warning logic
5 days ago
..
android Adjust Gradle properties 7 months ago
forms Merge bitcoin-core/gui#497: Enable users to configure their monospace font specifically 3 months ago
locale qt: 27.0 translations update 2 months ago
res
test Merge bitcoin/bitcoin#26564: test: test_bitcoin: allow -testdatadir=<datadir> 2 months ago
Makefile
README.md
addressbookpage.cpp scripted-diff: Fix bitcoin_config_h includes 3 months ago
addressbookpage.h gui: Add wallet name to address book page 7 months ago
addresstablemodel.cpp refactor: Drop util::Result operator= 1 week ago
addresstablemodel.h gui: Add wallet name to address book page 7 months ago
askpassphrasedialog.cpp scripted-diff: Fix bitcoin_config_h includes 3 months ago
askpassphrasedialog.h clang-tidy, qt: Fix `modernize-use-default-member-init` in headers 1 year ago
bantablemodel.cpp gui: fix comments for BanTableModel and BanTablePriv::refreshBanlist() 1 year ago
bantablemodel.h gui: fix comments for BanTableModel and BanTablePriv::refreshBanlist() 1 year ago
bitcoin.cpp gui: guard accessing a nullptr 'clientModel' 2 months ago
bitcoin.h gui: return EXIT_FAILURE on post-init fatal errors 11 months ago
bitcoin.qrc
bitcoin_locale.qrc qt: 27.0 translations update 2 months ago
bitcoinaddressvalidator.cpp
bitcoinaddressvalidator.h
bitcoinamountfield.cpp Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in `src/qt` 1 year ago
bitcoinamountfield.h clang-tidy, qt: Fix `modernize-use-default-member-init` in headers 1 year ago
bitcoingui.cpp gui: guard accessing a nullptr 'clientModel' 2 months ago
bitcoingui.h refactor: Remove call to StartShutdown from qt 5 months ago
bitcoinstrings.cpp qt: Update translation source file for v27.0 string freeze 3 months ago
bitcoinunits.cpp qt, refactor: Remove default cases for scoped enum 2 years ago
bitcoinunits.h qt, refactor: Remove BitcoinUnits::valid function 2 years ago
clientmodel.cpp refactor: gui, simplify boost signals disconnection 2 months ago
clientmodel.h refactor: gui, simplify boost signals disconnection 2 months ago
coincontroldialog.cpp scripted-diff: Fix bitcoin_config_h includes 3 months ago
coincontroldialog.h qt: remove confusing "Dust" label from coincontrol / sendcoins dialog 10 months ago
coincontroltreewidget.cpp
coincontroltreewidget.h
createwalletdialog.cpp gui: remove legacy wallet creation 7 months ago
createwalletdialog.h gui: remove legacy wallet creation 7 months ago
csvmodelwriter.cpp clang-tidy, qt: Fix `modernize-use-default-member-init` in headers 1 year ago
csvmodelwriter.h clang-tidy, qt: Fix `modernize-use-default-member-init` in headers 1 year ago
editaddressdialog.cpp wallet: Replace use of purpose strings with an enum 1 year ago
editaddressdialog.h clang-tidy, qt: Fix `modernize-use-default-member-init` in headers 1 year ago
guiconstants.h Merge bitcoin-core/gui#553: Change address / amount error background 3 months ago
guiutil.cpp Merge bitcoin/bitcoin#29623: Simplify network-adjusted time warning logic 5 days ago
guiutil.h [net processing] Move nTimeOffset to net_processing 4 weeks ago
initexecutor.cpp refactor: Extract util/exception from util/system 1 year ago
initexecutor.h
intro.cpp Merge bitcoin-core/gui#658: Intro: Never change the prune checkbox after the user has touched it 3 months ago
intro.h GUI/Intro: Never change the prune checkbox after the user has touched it 10 months ago
macdockiconhandler.h
macdockiconhandler.mm
macnotificationhandler.h
macnotificationhandler.mm
macos_appnap.h
macos_appnap.mm
main.cpp refactor: Remove hooking code for urlDecode 2 weeks ago
modaloverlay.cpp scripted-diff: Fix bitcoin_config_h includes 3 months ago
modaloverlay.h Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in `src/qt` 1 year ago
networkstyle.cpp scripted-diff: Remove unused chainparamsbase includes 1 year ago
networkstyle.h refactor: Replace string chain name constants with ChainTypes 1 year ago
notificator.cpp refactor: Avoid implicit-signed-integer-truncation-or-sign-change in FreedesktopImage 2 months ago
notificator.h Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in `src/qt` 1 year ago
openuridialog.cpp
openuridialog.h
optionsdialog.cpp gui: accomodate unix socket Proxy in updateDefaultProxyNets() 2 months ago
optionsdialog.h Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in `src/qt` 1 year ago
optionsmodel.cpp [clang-tidy] Enable the misc-no-recursion check 4 weeks ago
optionsmodel.h GUI: OptionsDialog: Replace verbose two-option font selector with simple combobox with Custom... choice 10 months ago
overviewpage.cpp GUI: Move "embedded font or not" decision into new OptionsModel::getFontForMoney method 10 months ago
overviewpage.h GUI: Move "embedded font or not" decision into new OptionsModel::getFontForMoney method 10 months ago
paymentserver.cpp scripted-diff: Fix bitcoin_config_h includes 3 months ago
paymentserver.h scripted-diff: Fix bitcoin_config_h includes 3 months ago
peertablemodel.cpp Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in `src/qt` 1 year ago
peertablemodel.h Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in `src/qt` 1 year ago
peertablesortproxy.cpp scripted-diff: Bump copyright headers 1 year ago
peertablesortproxy.h
platformstyle.cpp clang-tidy: Add `performance-no-automatic-move` check 1 year ago
platformstyle.h
psbtoperationsdialog.cpp scripted-diff: Use DataStream in most places 5 months ago
psbtoperationsdialog.h qt, refactor: Drop superfluous type conversions 7 months ago
qrimagewidget.cpp clang-tidy, qt: Fix `modernize-use-default-member-init` in headers 1 year ago
qrimagewidget.h clang-tidy, qt: Fix `modernize-use-default-member-init` in headers 1 year ago
qvalidatedlineedit.cpp Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in `src/qt` 1 year ago
qvalidatedlineedit.h Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in `src/qt` 1 year ago
qvaluecombobox.cpp clang-tidy, qt: Fix `modernize-use-default-member-init` in headers 1 year ago
qvaluecombobox.h clang-tidy, qt: Fix `modernize-use-default-member-init` in headers 1 year ago
receivecoinsdialog.cpp GUI: Support translating address type dropdown entries 1 year ago
receivecoinsdialog.h clang-tidy, qt: Fix `modernize-use-default-member-init` in headers 1 year ago
receiverequestdialog.cpp clang-tidy, qt: Fix `modernize-use-default-member-init` in headers 1 year ago
receiverequestdialog.h clang-tidy, qt: Fix `modernize-use-default-member-init` in headers 1 year ago
recentrequeststablemodel.cpp Use DataStream where possible 1 year ago
recentrequeststablemodel.h clang-tidy, qt: Fix `modernize-use-default-member-init` in headers 1 year ago
rpcconsole.cpp [net processing] Use std::chrono for type-safe time offsets 4 weeks ago
rpcconsole.h gui: Update Node window title with chain type 8 months ago
sendcoinsdialog.cpp qt, test: Recognize dialog object by name 3 months ago
sendcoinsdialog.h Merge bitcoin-core/gui#719: Remove confusing "Dust" label from coincontrol / sendcoins dialog 10 months ago
sendcoinsentry.cpp scripted-diff: Fix bitcoin_config_h includes 3 months ago
sendcoinsentry.h Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in `src/qt` 1 year ago
sendcoinsrecipient.h scripted-diff: Fix bitcoin_config_h includes 3 months ago
signverifymessagedialog.cpp Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in `src/qt` 1 year ago
signverifymessagedialog.h clang-tidy, qt: Fix `modernize-use-default-member-init` in headers 1 year ago
splashscreen.cpp refactor: Move system from util to common library 12 months ago
splashscreen.h Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in `src/qt` 1 year ago
trafficgraphwidget.cpp clang-tidy: Add `performance-type-promotion-in-math-fn` check 1 year ago
trafficgraphwidget.h Merge bitcoin-core/gui#686: clang-tidy: Force checks for headers in `src/qt` 1 year ago
transactiondesc.cpp scripted-diff: Fix bitcoin_config_h includes 3 months ago
transactiondesc.h scripted-diff: Bump copyright headers 1 year ago
transactiondescdialog.cpp
transactiondescdialog.h
transactionfilterproxy.cpp Correctly limit overview transaction list 1 year ago
transactionfilterproxy.h Correctly limit overview transaction list 1 year ago
transactionoverviewwidget.cpp scripted-diff: Bump copyright headers 1 year ago
transactionoverviewwidget.h scripted-diff: Bump copyright headers 1 year ago
transactionrecord.cpp Merge bitcoin-core/gui#119: Replace send-to-self with dual send+receive entries 8 months ago
transactionrecord.h Merge bitcoin-core/gui#119: Replace send-to-self with dual send+receive entries 8 months ago
transactiontablemodel.cpp doc: fix typos 6 months ago
transactiontablemodel.h clang-tidy, qt: Fix `modernize-use-default-member-init` in headers 1 year ago
transactionview.cpp gui: fix crash on selecting "Mask values" in transaction view 6 months ago
transactionview.h qt: mask values on transactions view 1 year ago
utilitydialog.cpp Modify command line help to show support for BIP21 URIs 3 months ago
utilitydialog.h
walletcontroller.cpp qt: Avoid error prone leading spaces in translatable strings 7 months ago
walletcontroller.h Merge bitcoin-core/gui#738: Add menu option to migrate a wallet 8 months ago
walletframe.cpp refactor: Move fs.* to util/fs.* 1 year ago
walletframe.h
walletmodel.cpp wallet: return and display signer error 3 weeks ago
walletmodel.h wallet: return and display signer error 3 weeks ago
walletmodeltransaction.cpp scripted-diff: Fix bitcoin_config_h includes 3 months ago
walletmodeltransaction.h clang-tidy, qt: Fix `modernize-use-default-member-init` in headers 1 year ago
walletview.cpp refactor: Avoid implicit-integer-sign-change in processNewTransaction 2 months ago
walletview.h qt: mask values on transactions view 1 year ago
winshutdownmonitor.cpp refactor: Remove call to StartShutdown from qt 5 months ago
winshutdownmonitor.h qt: Avoid non-self-contained Windows header 3 months ago

README.md

This directory contains the source code for the Bitcoin Core graphical user interface (GUI). It uses the Qt cross-platform framework.

The current precise version for Qt 5 is specified in qt.mk.

Compile and run

See build instructions: Unix, macOS, Windows, FreeBSD, NetBSD, OpenBSD

When following your systems build instructions, make sure to install the Qt dependencies.

To run:

./src/qt/bitcoin-qt

Files and Directories

forms/

  • A directory that contains Designer UI files. These files specify the characteristics of form elements in XML. Qt UI files can be edited with Qt Creator or using any text editor.

locale/

  • 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.

res/

  • Contains graphical resources used to enhance the UI experience.

test/

  • 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)

  • Represents the main window of the Bitcoin UI.

*model.(h/cpp)

  • The model. When it has a corresponding controller, it generally inherits from QAbstractTableModel. Models that are used by controllers as helpers inherit from other Qt classes like QValidator.
  • ClientModel is used by the main application bitcoingui and several models like peertablemodel.

*page.(h/cpp)

  • A controller. :NAMEpage.cpp generally includes :NAMEmodel.h and forms/:NAME.page.ui with a similar :NAME.

*dialog.(h/cpp)

  • Various dialogs, e.g. to open a URL. Inherit from QDialog.

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).

walletview.(h/cpp)

  • Represents the view to a single wallet.

Other .h/cpp files

  • UI elements like BitcoinAmountField, which inherit from QWidget.
  • bitcoinstrings.cpp: automatically generated
  • bitcoinunits.(h/cpp): BTC / mBTC / etc. handling
  • callback.h
  • guiconstants.h: UI colors, app name, etc.
  • guiutil.h: several helper functions
  • macdockiconhandler.(h/mm): macOS dock icon handler
  • macnotificationhandler.(h/mm): display notifications in macOS

Contribute

See CONTRIBUTING.md for general guidelines.

Note: Do not change local/bitcoin_en.ts. It is updated automatically.

Using Qt Creator as an IDE

Qt Creator 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.

Download Qt Creator

On Unix and macOS, Qt Creator can be installed through your package manager. Alternatively, you can download a binary from the Qt Website.

Note: If installing from a binary grabbed from the Qt Website: During the installation process, uncheck everything except for Qt Creator.

macOS
brew install qt-creator
Ubuntu & Debian
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
  1. 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
  1. You're all set! Start developing, building, and debugging the Bitcoin Core GUI