Qchat client has numerous features that make it user-friendly and easy to learn. The most prominent is that it is a graphical applet, meaning that upon start-up a user is presented with a graphical interface (Screenshots). The large text window dominating the left side of the interface is where the user sees messages sent by other users, as well as various system messages. The text field right below is where a user would enter text that he or she would like to send. The two lists on the right side are a channel list and list of users on current channel. The buttons below the channel list are used to either switch to the highlighted channel, or to add a new channel whose name is typed in the field directly above the list. The two buttons below the user list are used to filter or unfilter a user. This feature is used to suppress messages from a certain user. The filter can be removed by highlighting the user and clicking the "Unfilter" button. The "Status" button located below the filtering buttons allows a user to check the current status of the system (i.e. total number of users and channels). Lastly, the "Clear Text Area" button will simply clear the main output area of all text.
Aside from the obvious usability features, Qchat client also has important features that, while beneficial, are transparent to the user. One of the most important features of the Qchat client is its small size. Since currently most Internet users have very slow dial-in connections, it was important to make the client as small an applet as possible to minimize the wait that users have endure before they can start using Qchat. During development, every care was given to preserve the client's small size without compromising its features. Another important feature is the fact that the client is multithreaded. One of the threads handles various events, such as button clicks or text entered by user, as well as sending this information to the server. The second thread constantly monitors the network connection for messages coming from the server. These messages include system messages as well as text sent by other users. By employing two threads, the client's size and complexity are further reduced. Performance is also improved since the system can do more simultaneously, such as sending user's text to the server while displaying text sent from the server at the same time, instead of having to wait until the operation is complete.